標籤:
布爾操作符一共有三個: 非(Not)、與(AND)、或(OR)
- 邏輯非邏輯非操作符由一個歎號(!)表示,可以應用於ECMAScript中的任何值。無論這個值是什麼類型,這個操作符都會返回一個布爾值。邏輯非操作符首先將他的運算元轉換為一個布爾值,再對其求反。
//1.如果運算元是一個對象,返回falsevar o = { name: "ss"};alert(!o); //falsevar o1 = {};alert(!o1); //false//2.如果運算元是一個Null 字元串,返回truevar str1 = "";alert(!str1); //true//3.如果運算元是一個非Null 字元串,返回falsevar str2 = "name";alert(!str2); //false//4.如果運算元值是0,返回truevar num = 0;alert(!num); //true//5.如果運算元是任意非0數值(包括Infinity),返回falsevar num1 = 23;alert(!num1); //falsevar num2 = Number.MAX_VALUE * Number.MAX_VALUE;alert(!num2); //false//6.如果運算元是null,返回truevar str3 = null;alert(!str3); //true//7.如果運算元是NaN,返回truevar str4 = "ccc";str4++;alert(str4); //NaNalert(!str4); //true//8.如果運算元是undefined,返回truevar val;alert(val); //undefinedalert(!val);//true邏輯非操作符也可用於將一個值轉換為與其對應的布爾值。而同時使用兩個邏輯非操作符,實際上就會類比Boolean()轉型函數的行為。最終結果與對這個值使用Boolean()函數相同。
alert(!!"blue"); //truealert(!!0); //falsealert(!!NaN); //falsealert(!!""); //false
- 邏輯與
邏輯與操作符由兩個和號(&&)
邏輯與屬於短路操作,即如果第一個運算元能夠決定結果,那麼就不會再對第二個運算元求值。對於邏輯與操作而言,如果第一個運算元是false,則無論第二個運算元是什麼值,結果都不在可能是true。
var found = true;var result = (found && someUndefinedVariable); //這裡會發生錯誤alert(result); //這一行不會執行//上述代碼會發生錯誤,因為變數someUndefinedVariable沒有聲明。由於found的值是true,所以邏輯與操作符會繼續對後面的變數求值。var found1 = false;var result1 = (found1 && someUndefinedVariable); alert(result1); //false
- 邏輯或
邏輯或操作符由兩個豎線符號( || )表示,有兩個運算元。
邏輯或操作符也是短路操作,如果第一個運算元的求值結果為true,就不會對第二個運算元求值了。
var found = false;var result = (found || someUndefinedVariable); //這裡會發生錯誤alert(result); //這一行不會執行//上述代碼會發生錯誤,因為變數someUndefinedVariable沒有聲明。由於found的值是false,所以邏輯與操作符會繼續對後面的變數求值。var found1 = true;var result1 = (found1 || someUndefinedVariable); alert(result1); //true
我們可以利用邏輯或的這一行為來避免為變數賦null 或 undefined值。
var preferrdObject;var backupObject = "ccc"var myObject = preferrdObject || backupObject;alert(myObject); //ccc/* *變數myObject將被賦予等號後面兩個值中的一個。變數preferrdObject會優先賦給myObject值。 *變數backupObject負責在preferrdObject中不包含有效值的情況下提供後備值. *如果preferrdObject的值不是null,那麼將他的值賦給myObject *如果preferrdObject的值是null,則將backupObject的值賦給myObject */
JS基本概念 -- 操作符 -- 布爾操作符