站長資訊網
最全最豐富的資訊網站

es6中有沒有&符號

有&符號。在es6中,“&&”是邏輯與運算符,是一種AND布爾操作,語法為“操作數1 && 操作數2”;只有兩個操作數都為true時,才返回true,否則返回false。邏輯與是一種短路邏輯,如果左側表達式為 false,則直接短路返回結果,不再運算右側表達式。

es6中有沒有&符號

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

es6中有&符號,“&&”是邏輯與運算符。

邏輯與運算&&

邏輯與運算(&&)是 AND 布爾操作。只有兩個操作數都為 true 時,才返回 true,否則返回 false。具體描述如表所示。

邏輯與運算
第一個操作數 第二個操作數 運算結果
true true true
true false false
false true false
false false false

邏輯與是一種短路邏輯,如果左側表達式為 false,則直接短路返回結果,不再運算右側表達式。運算邏輯如下:

  • 第 1 步:計算第一個操作數(左側表達式)的值。

  • 第 2 步:檢測第一個操作數的值。如果左側表達式的值可轉換為 false(如 null、undefined、NaN、0、""、false),那么就會結束運算,直接返回第一個操作數的值。

  • 第 3 步:如果第一個操作數可以轉換為 true,則計算第二個操作數(右側表達式)的值。

  • 第 4 步:返回第二個操作數的值。

示例1

下面代碼利用邏輯與運算檢測變量并進行初始化。

var user;  //定義變量 (! user && console.log("沒有賦值"));  //返回提示信息“沒有賦值”
登錄后復制

等效于:

var user;  //定義變量 if (! user){  //條件判斷     console.log("變量沒有賦值"); }
登錄后復制

如果變量 user 的值為 0 或空字符串等假值轉換為布爾值時,則為 false,那么當變量賦值之后,依然提示變量沒有賦值。因此,在設計時必須確保邏輯與左側的表達式返回值是一個可以預測的值。

var user = 0;  //定義并初始化變量 (! user && console.log("變量沒有賦值"));  //返回提示信息“變量沒有賦值”
登錄后復制

右側表達式不應該包含賦值、遞增、遞減和函數調用等有效運算,因為當左側表達式為 false 時,則直接跳過右側表達式,會給后面的運算帶來潛在影響。

示例2

使用邏輯與運算符可以代替設計多重分支結構。

var n = 3; (n == 1) && console.log(1); (n == 2) && console.log(2); (n == 3) && console.log(3); ( ! n ) && console.log("null");
登錄后復制

上面代碼等效于下面多重分支結構。

var n = 3; switch(n){     case1:         console.log(1);         break;     case2:         console.log(2);         break;     case3:         console.log(3);         break;     default:         console.log("null");
登錄后復制

邏輯與運算的操作數可以是任意類型的值,并返回原始表達式的值,而不是把操作數轉換為布爾值再返回。

1) 對象被轉換為布爾值時為 true。例如,一個空對象與一個布爾值進行邏輯與運算。

console.log(typeof ({} && true));  //返回第二個操作數的值  true的類型:布爾型 console.log(typeof (true && {}));  //返回第二個操作數的值  {}的類型:對象
登錄后復制

2) 如果操作數中包含 null,則返回值總是 null。例如,字符串 "null" 與 null 類型值進行邏輯與運算,不管位置如何,始終都返回 null。

console.log(typeof ("null" && null));  //返回null的類型:對象 console.log(typeof (null && "null"));  //返回null的類型:對象
登錄后復制

3) 如果操作數中包含 NaN,則返回值總是 NaN。例如,字符串 "NaN" 與 NaN 類型值進行邏輯與運算,不管位置如何,始終都返回 NaN。

console.log(typeof ("NaN" && NaN));  //返回NaN的類型:數值 console.log(typeof (NaN && "NaN"));  //返回NaN的類型:數值
登錄后復制

4) 對于 Infinity 來說,將被轉換為 true,與普通數值一樣參與邏輯與運算。

console.log(typeof ("Infinity" && Infinity));  //返回第二個操作數Infinity的類型:數值 console.log(typeof (Infinity && "Infinity"));  //返回第二個操作數"Infinity"的類型:字符串
登錄后復制

5) 如果操作數中包含 undefined,則返回 undefined。例如,字符串 "undefined" 與 undefined 類型值進行邏輯與運算,不管位置如何,始終都返回 undefined。

console.log(typeof ("undefined" && undefined));  //返回undefined console.log(typeof (undefined && "undefined"));  //返回undefined
登錄后復制

擴展知識:ES6中&&和 __ 鮮為人知的騷操作

眾所周知,在es6中,邏輯運算符&&代表與條件,||代表或條件

let info = {   name:"long",   age:null };  //&& //info的name與age同時為真,則結果為真 if(info.name && info.age){   console.log("與條件"); //與條件 }else{   console.log("失敗"); }  //|| //info的name或age,只要有一個為真,則結果為真 if(info.name || info.age){   console.log("或條件"); //或條件 }else{   console.log("失敗"); }
登錄后復制

代替if/else

但是,他們還可以代表if/else進行簡化

let info = {name:"long"};  let name = info && info.name; //long  let isVip = false; let vipPrice = isVip || 19;//19
登錄后復制

decide() && true();  //如果decide()執行后為true,則執行true(),并輸出true()的值;如果decide()執行后為false,則輸出decide()執行后的結果,且不執行true()   //預計使用場景,有一個mongo查詢條件where,當name存在時,匹配name數據 where= {age:19}; name && where.name = name;
登錄后復制

decide() || false();  //如果decide()執行后為true,則執行decide(),并輸出decide()的值,fasle()不執行;如果decide()執行后為false,則執行fasle(),且輸出false()的結果
登錄后復制

decide() && true() || fasle();  //如果decide()執行后為true,則執行true(),并輸出true()的值; //如果decide()執行后為false,則執行false(),并輸出false()的值
登錄后復制

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产99久久久国产精品~~牛| 国产精品国产高清国产av| 精品国产VA久久久久久久冰| 中文字幕日韩精品有码视频| 亚洲精品亚洲人成在线观看下载 | 日韩av无码中文字幕| 国产Av一区二区精品久久| 亚洲国产日韩精品| 99精品视频在线| 午夜精品久久久久久影视777| 日韩成人在线视频| 国产精品亚洲专一区二区三区| 国产精品无码亚洲精品2021| 久热爱精品视频线路一| 国产成人精品视频在放| 亚洲精品资源在线| 91freevideos精品| 91精品久久久久久久久久| 2021国产精品久久久久| 91精品久久久久久久久久小网站| 99热在线精品免费播放6| 99久久免费精品高清特色大片| 久久国产精品2020盗摄| 久久精品国产999大香线焦| 亚洲国产精品福利片在线观看| 黑人精品videos亚洲人| 国产精品视频白浆免费视频| 国产在视频线在精品| 精品久久精品久久| 精品亚洲成a人在线观看| 在线观看国产精品麻豆| 国产精品午夜福利在线观看地址| 国产精品91在线播放| 中文字幕日韩有码| 亚洲AV日韩AV一区二区三曲| 成人无码精品一区二区三区| 精品无人乱码一区二区三区| 国产精品av一区二区三区不卡蜜| 网曝门精品国产事件在线观看| 国产精品爽爽V在线观看无码 | 精品福利一区3d动漫|