站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        es6中有沒有&符號

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

        es6中有沒有&符號

        前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點擊使用

        本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

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

        邏輯與運算&&

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

        邏輯與運算
        第一個操作數(shù) 第二個操作數(shù) 運算結(jié)果
        true true true
        true false false
        false true false
        false false false

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

        • 第 1 步:計算第一個操作數(shù)(左側(cè)表達(dá)式)的值。

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

        • 第 3 步:如果第一個操作數(shù)可以轉(zhuǎn)換為 true,則計算第二個操作數(shù)(右側(cè)表達(dá)式)的值。

        • 第 4 步:返回第二個操作數(shù)的值。

        示例1

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

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

        等效于:

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

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

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

        右側(cè)表達(dá)式不應(yīng)該包含賦值、遞增、遞減和函數(shù)調(diào)用等有效運算,因為當(dāng)左側(cè)表達(dá)式為 false 時,則直接跳過右側(cè)表達(dá)式,會給后面的運算帶來潛在影響。

        示例2

        使用邏輯與運算符可以代替設(shè)計多重分支結(jié)構(gòu)。

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

        上面代碼等效于下面多重分支結(jié)構(gòu)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        代替if/else

        但是,他們還可以代表if/else進(jìn)行簡化

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

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

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

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

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲AV无码国产精品色午友在线 | 色花堂国产精品第一页| 久久久久久无码国产精品中文字幕| 91国在线啪精品一区| 亚洲精品无码不卡在线播放HE| 国内精品免费久久影院| 久久99国产精品久久99果冻传媒| 日韩精品系列产品| 亚洲国产精品专区在线观看 | 一区二区精品在线| CAOPORM国产精品视频免费| 四虎国产精品永久在线| 亚洲精品第一国产综合境外资源| 精品91自产拍在线观看| 91探花国产综合在线精品| 国产2021精品视频免费播放| 日本内射精品一区二区视频| 亚洲精品无码久久久| 麻豆精品| 欧美精品亚洲精品日韩专区| 国产亚洲曝欧美不卡精品| 91精品国产麻豆国产自产在线| 国产精品亚洲精品观看不卡| 97视频在线观看这里只有精品| 国产精品视频一区二区三区四 | 久久夜色精品国产噜噜亚洲AV| 香港三级精品三级在线专区 | 午夜精品久久久久久99热| 久久久久国产日韩精品网站| 亚洲AV无码国产精品色午友在线| 精品人妻系列无码人妻免费视频| 91精品国产品国语在线不卡| 99热成人精品国产免男男| 四虎精品免费永久在线| 女人香蕉久久**毛片精品| 久久成人国产精品二三区| 精品视频第一页| 欧美亚洲国产精品久久蜜芽| 中文字幕亚洲综合精品一区| 在线电影国产精品| 国产精品白丝AV嫩草影院|