亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript中一個(gè)運(yùn)算符優(yōu)先級(jí)問(wèn)題引發(fā)的思考

zengdongbao / 1734人閱讀

摘要:中一個(gè)運(yùn)算符優(yōu)先級(jí)問(wèn)題引發(fā)的思考題目假設(shè)已經(jīng)聲明可定義為任何值。分析因?yàn)槲覀兒雎粤诉\(yùn)算符的優(yōu)先級(jí)。要知道,加號(hào)優(yōu)先級(jí)高于三目運(yùn)算,低于括號(hào)。為值,在里的判斷就是值。

JavaScript中一個(gè)運(yùn)算符優(yōu)先級(jí)問(wèn)題引發(fā)的思考 題目

假設(shè) val 已經(jīng)聲明,可定義為任何值。則下面js代碼有可能輸出的結(jié)果為:

console.log("Value is " + (val != "0") ? "define" : "undefine");

A. Value is define
B. Value is undefine
C. define
D. undefine
E. Value is define 或者 Value is undefine
F. define 或者 undefine
G. 其它選項(xiàng)都有可能

如果是你,你會(huì)選什么呢?

可以說(shuō),大部分人都會(huì)在A、B、E中選擇,以為重點(diǎn)在后面的三目運(yùn)算符,前面字符串原樣輸出就是了。但是答案是 C 。

分析

因?yàn)槲覀兒雎粤诉\(yùn)算符的優(yōu)先級(jí)。要知道,加號(hào) + 優(yōu)先級(jí)高于三目運(yùn)算 ? :,低于括號(hào) ()。不管 (val != "0") 的真假,"Value is " + (val != "0") 是一個(gè)字符串并且轉(zhuǎn)換成布爾值一定是 true !

下面我們來(lái)具體分析里面的每一部分。

先來(lái)看看括號(hào)里面的情況,題目已經(jīng)說(shuō)了:

假設(shè) val 已經(jīng)聲明,可定義為任何值。

所以,(val != "0") 的值可以是 true 或者 false ,那么這個(gè)就涉及到JavaScript的一些隱式轉(zhuǎn)換邏輯。

眾所周知,

0 == "0"  // true
null == undefined  // true
false == "0"  // true
常用的隱式轉(zhuǎn)換邏輯
x+""  //等價(jià)于String(x)

+x  //等價(jià)于Number(x),也可以寫成x-0

!!x  //等價(jià)于Boolean(x)
附錄 - Javascript類型轉(zhuǎn)換

回到本題條件永遠(yuǎn)為真,并且只輸出 "define"

Boolean

還有一個(gè)需要注意的地方

下面程序的顯示結(jié)果是?

var x = new Boolean(false);
if (x) {
  alert("hi");
}
var y = Boolean(0);
if (y) {
  alert("hello"); 
}

x為Boolean對(duì)象,在if語(yǔ)句里的判斷為true,雖然x的值為false,但是作為對(duì)象,if會(huì)直接判斷為true。y為Boolean值,在if里的判斷就是false值。所以會(huì)顯示 "hi"。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88206.html

相關(guān)文章

  • 一道前端面試題引發(fā)思考

    摘要:直接開(kāi)始題目是厲害了說(shuō)句實(shí)話開(kāi)發(fā)中誰(shuí)寫成這樣保證會(huì)被打死。不過(guò)面試就是面試,有面試官的考量點(diǎn)。官方是這么說(shuō)的。結(jié)果完美,不過(guò)小姐姐的意思是數(shù)組的方法會(huì)自動(dòng)觸發(fā)數(shù)組的。 直接開(kāi)始題目是 if(a==1 && a==2 && a==3){ alert(厲害了) } 說(shuō)句實(shí)話開(kāi)發(fā)中誰(shuí)寫成這樣保證會(huì)被打死。 不過(guò)面試就是面試,有面試官的考量點(diǎn)。 我理解的點(diǎn)有兩個(gè) 1、隱式類型轉(zhuǎn)換 先說(shuō)...

    gaomysion 評(píng)論0 收藏0
  • 一道三目運(yùn)算測(cè)試題引發(fā)思考

    摘要:因?yàn)榧臃ǖ膬?yōu)先級(jí)比條件運(yùn)算符高,所以先運(yùn)算加號(hào),是字符串拼接,結(jié)果是非空字符串,在中字符串的布爾類型為。知識(shí)點(diǎn)三目運(yùn)算為真執(zhí)行為假執(zhí)行運(yùn)算優(yōu)先級(jí)在中布爾類型只有以下種情況為假,其他都為真。 一、測(cè)試題 原題:以下代碼的輸出是? var val = false; alert(val is + val ? true : false); 解析: 1. 此題考察的知識(shí)點(diǎn): 三目運(yùn)算、**運(yùn)...

    SHERlocked93 評(píng)論0 收藏0
  • 簡(jiǎn)單說(shuō) !![]==true 與 []==true 引發(fā)思考

    摘要:簡(jiǎn)單說(shuō)中的與方法我們一句一句的看結(jié)果是邏輯非,會(huì)將操作數(shù)的布爾值求反,而就是類型轉(zhuǎn)換,將對(duì)應(yīng)的類型轉(zhuǎn)換為型所以我們看一看,一次求反返回的就是,再求反返回的就是。原始值不可變更的值,包括布爾值數(shù)字和字符串。 說(shuō)明 直接說(shuō)出問(wèn)題 !![] == true //結(jié)果是true [] == true //結(jié)果是false ![] == [] //結(jié)果是true 為什么會(huì)出現(xiàn)這種情...

    lbool 評(píng)論0 收藏0
  • 簡(jiǎn)單說(shuō) !![]==true 與 []==true 引發(fā)思考

    摘要:簡(jiǎn)單說(shuō)中的與方法我們一句一句的看結(jié)果是邏輯非,會(huì)將操作數(shù)的布爾值求反,而就是類型轉(zhuǎn)換,將對(duì)應(yīng)的類型轉(zhuǎn)換為型所以我們看一看,一次求反返回的就是,再求反返回的就是。原始值不可變更的值,包括布爾值數(shù)字和字符串。 說(shuō)明 直接說(shuō)出問(wèn)題 !![] == true //結(jié)果是true [] == true //結(jié)果是false ![] == [] //結(jié)果是true 為什么會(huì)出現(xiàn)這種情...

    gnehc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<