解析JavaScript中點(diǎn)號“.”的多義性
點(diǎn)號「.」在JavaScript中有兩種語義
語義1、表示算術(shù)中的小數(shù)點(diǎn)(浮點(diǎn)數(shù)),如 2.5
語義2、取對象屬性、方法,如 [].push(2)
這幾乎沒有任何難理解的地方,但下面這個問題則很有趣。
// 這行代碼會如何執(zhí)行
1.toString();
Firebug 中如下

這里的點(diǎn)號表達(dá)的是上述的語義1,因此點(diǎn)號后面必須跟一個數(shù)字,這里跟的是toString,報(bào)語法錯了。
解決方法很簡單,如加個小括號
(1).toString();
還可以這么寫,但難理解些
1..toString();
之所以瀏覽器中都能運(yùn)行,是因?yàn)楦鳛g覽器JS引擎都把“1..toString()”理解成了 “1.0.toString()”。這里第一個點(diǎn)號是語義1,第二個點(diǎn)號是語義2。
還有更奇怪的寫法,竟然也沒有報(bào)錯
1 .toString(); // 注意點(diǎn)號前面有一個空格
顯然,這里的點(diǎn)號是語義2,即JS引擎會忽略點(diǎn)運(yùn)算符前邊的空格,其實(shí)無論前后的空格都會忽略。如下
1 . toString(); // 點(diǎn)號前后都有一個空格
1 . toString(); // 點(diǎn)號前后各有兩個空格
1 .toString(); // 點(diǎn)號前有一個tab
1 . toString(); // 點(diǎn)號前后各有一個tab
JS引擎不但會忽略空格,也會忽略tab。
相關(guān)文章
詳解JS中的堆棧,事件循環(huán),執(zhí)行上下文和作用域以及閉包
這篇文章主要為大家詳細(xì)介紹了JavaScript中的堆棧,事件循環(huán),執(zhí)行上下文和作用域以及閉包的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01
JS公共小方法之判斷對象是否為domElement的實(shí)例
下面小編就為大家?guī)硪黄狫S公共小方法之判斷對象是否為domElement的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
JavaScript flash復(fù)制庫類 Zero Clipboard
開發(fā)中經(jīng)常會用到復(fù)制的功能,在 IE 下實(shí)現(xiàn)比較簡單。但要想做到跨瀏覽器比較困難了。2011-01-01

