JavaScript編程中容易出BUG的幾點(diǎn)小知識(shí)

JavaScript是如今最受歡迎的編程語(yǔ)言之一,但受歡迎同時(shí)就是該語(yǔ)言自身的各種特性帶來(lái)的副作用,無(wú)論該語(yǔ)言多美妙,每天還是有成千上萬(wàn)的程序員弄出一堆bug。先不要嘲笑別人,或許你也是其中之一。
給你一個(gè)例子,下面是幾個(gè)簡(jiǎn)短的完全有效的JS片段(你可以在你的控制臺(tái)上試驗(yàn)一下):

typeof NaN === 'number' // true 
Infinity === 1/0        // true
0.1 + 0.2 === 0.3       // false,前面加括號(hào)也一樣
"3" + 1                 // '31'  
"3" - 1                 // 2

你還相信自己的JavaScript嗎?
1、JS最小的值

Number.MIN_VALUE > 0; //true
Number.MIN_VALUE用于JavaScript可以表達(dá)的最小值,為5e-324,然而是JS中最接近0的一個(gè)數(shù)

2、字符串連接

("foo" + + "bar") === "fooNaN"  //true
"why I am " + typeof + ""       // why I am number

JS解析成“foo” + (+ “bar”), 這將會(huì)把 “bar” 轉(zhuǎn)成一個(gè)數(shù)字
3、parseInt 函數(shù)

parseInt('06'); // 6
parseInt('08'); // 0  注意,谷歌新版已修正
parseInt(null, 24) === 23 // true

4、null是不是object

typeof null  // object
null instanceof Object  // false

5、return返回內(nèi)容

function myjson(){  
  return   
  [     2   ]
}
myjson();  // undefined

return返回的內(nèi)容必須和return在同一行
6、奇怪的數(shù)字

 012  == 12  // false
'012' == 12  // true
 "3" + 1     // '31'
 "3" - 1     // 2
0.1 + 0.2 == 0.3 // false
0.1 + 0.7 == 0.8 // false
0.2 + 0.7 == 0.9 // false
9999999999999999 // 10000000000000000
9999999999999999-1 //10000000000000000
111111111111111111111 // 111111111111111110000

7、詭異的參數(shù)

function hello(what) {    
  alert(arguments[0]);    //vicky     
  what = "world";    
  return "Hello, " + arguments[0] + "!";
}
hello("vicky"); //"Hello, world!"

8、讓人頭大的等號(hào)

NaN === NaN;   // false
[] == false;   // true
"" == false;   // true
null == false; // false
[] == ![]      // true
window.window == window  // true
window.window === window // false,有些瀏覽器是true
window == document       // true,有些瀏覽器是false
("0" && {}) == 0 // false
(0 && {}) == 0   // true
0 == "0"         // true
[] == 0          // true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,948評(píng)論 18 139
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock閱讀 3,408評(píng)論 2 36
  • R: 開(kāi)始動(dòng)筆,練習(xí)之二:憑借直覺(jué) 這是一個(gè)訓(xùn)練寫(xiě)作的練習(xí),包括七個(gè)步驟,每一步都要單獨(dú)進(jìn)行。確認(rèn)你已經(jīng)完成了一個(gè)...
    安彥妮閱讀 191評(píng)論 0 0
  • 一起刷過(guò)的數(shù)學(xué)卷子 記憶猶新 英語(yǔ)老師每次批評(píng)我的時(shí)候 你在那幸災(zāi)樂(lè)禍 唯一堅(jiān)持下來(lái)的事 在你的歷史書(shū)上寫(xiě)完了所有...
    之丹閱讀 180評(píng)論 0 0
  • 衷心祈愿 您和您的家人 幸福安康 ?;墼鲩L(zhǎng) 一切善愿悉皆成就 一切事業(yè)無(wú)有魔障
    菩提哆啦閱讀 160評(píng)論 2 1