JavaScript 中的捷徑計算
捷徑計算意思是說,假設第一個參數不足以確定表達式的值,第二個參數才會被執行,當 AND 函數的第一個參數計算結果為 false,則所有結果則為 false;當 OR 函數的第一個參數計算結果為 true,則所有結果為 true。
對於以下的 test
條件和 isTrue
以及 isFalse
函式。
var test = true;
var isTrue = function(){
console.log('Test is true.');
};
var isFalse = function(){
console.log('Test is false.');
};
使用 AND 邏輯 - &&
。
// 一個正常的 if 條件式
if (test){
isTrue(); // Test 是 true
}
// 上面可以使用 '&&' 作為 -
( test && isTrue() ); // Test 是 true
使用 OR 邏輯 - ||
。
test = false;
if (!test){
isFalse(); // Test 是 false.
}
( test || isFalse()); // Test 是 false.
OR 邏輯可以用在為函式參數設定預設值。
function theSameOldFoo(name){
name = name || 'Bar' ;
console.log("My best friend's name is " + name);
}
theSameOldFoo(); // My best friend's name is Bar
theSameOldFoo('Bhaskar'); // My best friend's name is Bhaskar
當屬性尚未被定義的時候,邏輯 AND 可以避免異常情況。 例如:
var dog = {
bark: function(){
console.log('Woof Woof');
}
};
// 呼叫 dog.bark();
dog.bark(); // Woof Woof.
// 但是如果 dog 尚未被定義,dog.bark() 將會發生「無法讀取尚未定義的屬性 'bark'」的錯誤。
// 為了防止這個問題,我們使用 &&。
dog && dog.bark(); // 如果 dog 被定義了,那我們就可以呼叫 dog.bark()。
MEET THE NEW JSTIPS BOOK
You no longer need 10+ years of experience to get your dream job.
Use the 100 answers in this short book to boost your confidence and skills to ace the interviews at your favorite companies like Twitter, Google and Netflix.
GET THE BOOK NOW
MEET THE NEW JSTIPS BOOK
The book to ace the JavaScript Interview.
A short book with 100 answers designed to boost your knowledge and help you ace the technical interview within a few days.
GET THE BOOK NOW