《JavaScript權(quán)威指南》讀書(shū)筆記1 可選的分號(hào)

絕大多數(shù)編程語(yǔ)言以分號(hào)結(jié)束一條語(yǔ)句,但在JavaScript中除非你多條語(yǔ)句寫(xiě)在同一行必須用分號(hào)隔開(kāi),否則分號(hào)是可選的。JavaScript在無(wú)法正確解析代碼的時(shí)候會(huì)自動(dòng)填補(bǔ)分號(hào),如:

var a
a
=
3
console.log(a)

JavaScript會(huì)將其解析為:var a;a=3;console.log(a)

但是自動(dòng)填補(bǔ)分號(hào)有很多例外情況,可能并不會(huì)如你想像般工作,比如下面的情況:

var y=x+f
(a+b).toString()

JavaScript會(huì)看做:var y=x+f(a+b).toString();,這明顯不是你想像的:var y=x+f;(a+b).toString();

再看下面一種情況:

return
true

JavaScript會(huì)看做:return;true;,也不是你想像中的:return true;

下面的代碼段也是出人意料的:

x
++
y

JavaScript會(huì)看做:x;++y;,而不是:x++;y;

總結(jié)如下

  1. 如果一條語(yǔ)句以“(”、“[”、“/”、“+”或“-”開(kāi)始,那么它極有可能和前一條語(yǔ)句合在一起解析。
  2. 在return、break和continue和隨后的表達(dá)式之間不能有換行。
  3. 涉及“++”和“--”運(yùn)算符的時(shí)候,可以作為表達(dá)式的前綴,也可以當(dāng)做表達(dá)式的后綴。如果將其用做后綴表達(dá)式,它和表達(dá)式應(yīng)當(dāng)在同一行。否則,行尾將填補(bǔ)分號(hào),同時(shí)“++”或“--”將會(huì)作為下一行代碼的前綴操作符并與之一起解析。

對(duì)于99%的人來(lái)說(shuō),這些知識(shí)都是無(wú)用的,因?yàn)楹苌贂?huì)有人不寫(xiě)分號(hào),但是如果我們不幸遇到了此類(lèi)代碼(希望我們永遠(yuǎn)都不會(huì)遇到),這些知識(shí)有利于我們讀懂它們。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端07班 王語(yǔ)句JavaScript程序的執(zhí)行單位為行(line),也就是一行一行地執(zhí)行。一般情況下,每一行就是...
    ea203453e188閱讀 994評(píng)論 0 4
  • 第三章 類(lèi)型、值和變量 1、存取字符串、數(shù)字或布爾值的屬性時(shí)創(chuàng)建的臨時(shí)對(duì)象稱做包裝對(duì)象,它只是偶爾用來(lái)區(qū)分字符串值...
    坤少卡卡閱讀 728評(píng)論 0 1
  • 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一行一行地執(zhí)行。一般情況下,每一行就是一個(gè)語(yǔ)句。 ...
    米塔塔閱讀 508評(píng)論 1 10
  • 標(biāo)簽: 我的筆記 ---學(xué)習(xí)資料:http://javascript.ruanyifeng.com/ 1. 導(dǎo)論 ...
    暗夜的怒吼閱讀 956評(píng)論 0 1
  • 微風(fēng)繾綣湖黛青, 輕煙氤氳許柔情。 紅妝巧抹俏佳人, 千山萬(wàn)水我與卿。
    panjw閱讀 171評(píng)論 0 3

友情鏈接更多精彩內(nèi)容