国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

解讀JavaScript代碼 var ie = !-[1,] 最短的IE判定代碼

2019-11-20 23:48:10
字體:
來源:轉載
供稿:網友
var ie = !-[1,];

    這句代碼在IE9之前曾被稱為世界上最短的IE判定代碼。代碼雖短但確包含了不少javascript基礎知識在里面。在這個例子中代碼執行時會先調用數組的toString()方法 ,執行[1,].toString()在IE6,7,8中將會得到“1,”。然后表達式就變為!-“1,”。再嘗試把“1,”轉換成數值類型得到NaN ,再對NaN取負得到值仍為NaN。最后執行!NaN返回true。下面通過分解這個語句來回顧下代碼中所涉及到的javascript知識:

瀏覽器的數組字面量解析差異

     [1,]表示使用javascript的數組字面量定義了一個數組。 在IE6,7,8中數組有兩個元素,數組中的值分別為1,undefined。在標準的瀏覽器中會忽略第一個元素后的undefined,數組只包含一個元素1。

數組的toString()方法

    調用數組對象的toString()方法時會對數組中的每個元素調用toString()方法,如果元素的值為NULL或者undefined時會返回空的字符串,然后將得到的每項的值拼成一個使用 逗號“,”分隔的字符串。

 一元減號運算符  

  使用一元減號運算符時如果運算數是數值類型則直接對運算數取負,否則會先嘗試把運算數轉換為數值類型,轉換過程相當于執行Number函數,然后再對得到的結果取負。 

邏輯非運算

    執行邏輯非運算時如果操作數為NaN、NULL或undefined 時返回 true。

通過上面的知識可以得出代碼 var ie = !-[1,]; 其實等價于 var ie = !(-Number([1,].toString())); 在IE6/7/8中值為true。如分析的有什么不對的地方或者有什么不同意見歡迎指正!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺昌县| 鸡西市| 佳木斯市| 应城市| 临桂县| 休宁县| 济阳县| 炎陵县| 九龙县| 土默特左旗| 合山市| 宿迁市| 台湾省| 青浦区| 乳山市| 漯河市| 济南市| 晋州市| 拉萨市| 太谷县| 通化市| 巴林右旗| 望江县| 土默特右旗| 米脂县| 安康市| 河间市| 铜山县| 枣阳市| 罗甸县| 西藏| 静安区| 康保县| 定日县| 措勤县| 吴江市| 武穴市| 开平市| 黄大仙区| 清水河县| 松阳县|