在线看片电视剧免费看,精品国产一区二区三区2021,99久久久无码国产精品免费,精品人妻少妇嫩草AV无码专区

    電話(huà)

    0411-39943997

仟億科技
客服中心
  • 電話(huà)
  • 電話(huà)咨詢(xún):0411-39943997
  • 手機
  • 手機咨詢(xún):15840979770
    手機咨詢(xún):13889672791
網(wǎng)絡(luò )營(yíng)銷(xiāo) >更多

網(wǎng)站js筆試題到==運算符的簡(jiǎn)析

作者:billionnet 發(fā)布于:2012/3/23 18:15:32 點(diǎn)擊量:

在cssrain整理的一個(gè) 試題集 中有這么一道題:



運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


按照我的理解,任何非0的數值的布爾值都應該為true。


可是這道題的正確輸出為:false false true。


(-1==true)的值為false。


再來(lái)看下面這個(gè)例子:



運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


運行結果依次為:false,true,true。


在這里,我們發(fā)現,if(aVar) 和 if(aVar == true)的結果并不相同。


cssrain在 答案 中的解釋是:


if(aVar) 和  if (aVar==true) 對負數有截然不同的答案。


真的是負數的原因嗎?看下面這個(gè)例子:


運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


為什么正數2返回的也是false呢。我們將數字轉換為boolean值看看。


運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


這里非0數值的布爾值的確都是true,也就是說(shuō)所有的問(wèn)題都集中在2==true中的==運算符上?;究梢源_定,==一定不是把數字轉換為布爾值再進(jìn)行比較。


看看ECMA-262(第80頁(yè))中怎么說(shuō)的:


6.If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
7.If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).


也就是說(shuō),布爾值會(huì )被首先轉換為數字,然后進(jìn)行比較。true的數字值為1,false為0。所以2和-1都不能和true相等。


進(jìn)一步看下面這個(gè)例子:



運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


按照前面的思路,true會(huì )被轉換為1,所以三個(gè)語(yǔ)句都會(huì )返回false。運行一下,發(fā)現的確如此。


下面將if(aVar==true)改為if(aVar)。


運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


這時(shí)的運行結果是true,true,false。因為Boolean("undefined")、Boolean("false")、Boolean("")的結果為true,true,false。非空字符串轉換為布爾值true。


最后還有一個(gè)例子,解釋當==兩邊為字符串和數字時(shí)的比較規律。


運行代碼框

[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


發(fā)現沒(méi),這個(gè)"001"==true是為true的。


因為true先被轉換為1了。然后參考ECMA的規則:


4.If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).
5.If Type(x) is String and Type(y) is Number, return the result of the comparison ToNumber(x) == y.


字符串要被轉換為數字,Number("001")的值也為1,所以結果為true。



分享到:


Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明

最好看的2019中文大全| 亚洲AV无码乱码忘忧草亚洲人| 波多野成人无码精品电影| 国产在线不卡一区二区| 国内精品久久久久影院优| 国产麻豆一精品一AV一免费软件|