成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript的分號(hào)

DTeam / 1464人閱讀

摘要:許多程序員包括本書中的示例代碼使用分號(hào)來(lái)明確標(biāo)記語(yǔ)句的結(jié)束,即使在并不完全需要分號(hào)的時(shí)候也是如此。為了能讓上述代碼解析為兩條不同的語(yǔ)句,必須手動(dòng)填寫行尾的顯式分號(hào)。第一個(gè)例外是在涉及和語(yǔ)句的場(chǎng)景中。

和其他許多編程語(yǔ)言一樣,JavaScript使用分號(hào)(;)將語(yǔ)句分隔 開。這對(duì)增強(qiáng)代碼的可讀性和整潔性是非常重要的:缺少分隔符,一條語(yǔ)句的結(jié)束 就成了下一條語(yǔ)句的開始,反之亦然。在JavaScript中,如果語(yǔ)句各自獨(dú)占一行,通 ??梢允÷哉Z(yǔ)句之間的分號(hào)(程序結(jié)尾或右花括號(hào)“}”之前的分號(hào)也可以省略)。

許多JavaScript程序員(包括本書中的示例代碼)使用分號(hào)來(lái)明確標(biāo)記語(yǔ)句的結(jié)束, 即使在并不完全需要分號(hào)的時(shí)候也是如此。另一種風(fēng)格就是,在任何可以省略分號(hào) 的地方都將其省略,只有在不得不用的時(shí)候才使用分號(hào)。不管采用哪種編程風(fēng)格, 關(guān)于JavaScript中可選分號(hào)的問(wèn)題有幾個(gè)細(xì)節(jié)需要注意。

考慮如下代碼,因?yàn)閮蓷l語(yǔ)句用兩行書寫,第一個(gè)分號(hào)是可以省略掉的:

a=3; 
b=4;

如果按照如下格式書寫,第一個(gè)分號(hào)則不能省略掉:

a=3;b=4;

需要注意的是,JavaScript并不是在所有換行處都填補(bǔ)分號(hào):只有在缺少了分號(hào) 就無(wú)法正確解析代碼的時(shí)候,JavaScript才會(huì)填補(bǔ)分號(hào)。 換句話講(類似下面代碼中的兩處異常),如果當(dāng)前語(yǔ)句和隨后的非空格字符不能當(dāng)成一個(gè)整體來(lái)解析的話, JavaScript就在當(dāng)前語(yǔ)句行結(jié)束處填補(bǔ)分號(hào)??匆幌氯缦麓a:

var a
a
=
3 console.log(a)

JavaScript將其解析為:

var a;a=3;console.log(a);

JavaScript給第一行換行處添加了分號(hào),因?yàn)槿绻麤](méi)有分號(hào),JavaScript就無(wú)法解析代碼 var a a。第二個(gè)a可以多帶帶當(dāng)做一條語(yǔ)句“a;”,但JavaScript并沒(méi)有給第二行結(jié) 尾填補(bǔ)分號(hào),因?yàn)樗梢院偷谌袃?nèi)容一起解析成 “a=3;”。

這些語(yǔ)句的分隔規(guī)則會(huì)導(dǎo)致一些意想不到的情形,這段代碼寫成了兩行,看起來(lái)是兩條獨(dú)立的語(yǔ)句:

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

但第二行的圓括號(hào)卻和第一行的f組成了一個(gè)函數(shù)調(diào)用,JavaScript會(huì)把這段代 碼看做:

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

而這段代碼的本意并不是這樣。為了能讓上述代碼解析為兩條不同的語(yǔ)句,必須手動(dòng)填寫行尾的顯式分號(hào)。

通常來(lái)講,如果一條語(yǔ)句以“(”、“[”、“/”、“+”或“-”開始,那么它極有可能和前一條語(yǔ)句合在一起解析。

以“/”、“+”和“-”開始的語(yǔ)句并不常見,而以“(”和“[”開始的 語(yǔ)句則非常常見,至少在一些JavaScript編碼風(fēng)格中是很普遍的。有些程序員喜歡保守地在語(yǔ)句前加上一個(gè)分號(hào)(有些代碼合并工具也是這么干的),這樣哪怕之前的語(yǔ)句被修改了、分號(hào)被誤刪除了,當(dāng) 前語(yǔ)句還是會(huì)正確地解析:

var x=0//這里省略了分號(hào) 
;[x,x+1,x+2].forEach(console.log)//前面的分號(hào)保證了正確地語(yǔ)句解析

如果當(dāng)前語(yǔ)句和下一行語(yǔ)句無(wú)法合并解析,JavaScript則在第一行后填補(bǔ)分號(hào), 這是通用規(guī)則,但有兩個(gè)例外。第一個(gè)例外是在涉及 returnbreakcontinue 語(yǔ)句的場(chǎng)景中。如果這三個(gè)關(guān)鍵字后緊跟著換行,JavaScript則會(huì)在換行 處填補(bǔ)分號(hào)。例如,這段代碼:

return 
true;

JavaScript會(huì)解析成:

return;true;

而代碼的本意是這樣:

return true;

也就是說(shuō),在 return、breakcontinue 和隨后的表達(dá)式之間不能有換行。如果添加了換行,程序則只有在極特殊的情況下才會(huì)報(bào)錯(cuò),而且程序的調(diào)試非常不方便。

第二個(gè)例外是在涉及“++”和“——”運(yùn)算符的時(shí)候。這些運(yùn)算符可以 作為表達(dá)式的前綴,也可以當(dāng)做表達(dá)式的后綴。如果將其用做后綴表達(dá)式,它和表 達(dá)式應(yīng)當(dāng)在同一行。否則,行尾將填補(bǔ)分號(hào),同時(shí)“++”或“——”將會(huì)作為下一行代 碼的前綴操作符并與之一起解析,例如,這段代碼:

x 
++ 
y

這段代碼將解析為“x;++y”,而不是“x++;y”。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84889.html

相關(guān)文章

  • javascript時(shí)要不要省略分號(hào)?

    摘要:自動(dòng)填補(bǔ)分號(hào)的規(guī)則在說(shuō)要不要寫分號(hào)之前,先了解一下自動(dòng)填補(bǔ)分號(hào)的規(guī)則。后來(lái)看到知乎上的作者尤雨溪和前端大神賀師俊的回答后,我對(duì)寫分號(hào)的想法完全顛覆了??偸菍懛痔?hào)并不能完全解決缺陷如后換行會(huì)自動(dòng)插入分號(hào)。 在打算寫這篇文章之前,我是一個(gè)分號(hào)黨,在寫這篇文章之后,可能會(huì)轉(zhuǎn)為無(wú)分號(hào)黨了。之前是寫分號(hào)是編輯器語(yǔ)法較檢所養(yǎng)成的強(qiáng)迫癥,現(xiàn)在觀念的轉(zhuǎn)變,是因?yàn)榭戳瞬簧俅笊竦挠懻摵?,覺(jué)得javascr...

    wupengyu 評(píng)論0 收藏0
  • 【知識(shí)點(diǎn)】Javascript分號(hào)規(guī)則

    摘要:花點(diǎn)時(shí)間搞清楚中的分號(hào)規(guī)則吧不管你喜歡結(jié)尾帶分號(hào)或省略分號(hào)的模式分號(hào)允許的場(chǎng)景分號(hào)一般允許出現(xiàn)在大部分語(yǔ)句的末尾,比如等栗子僅有一個(gè)分號(hào)可以表示空語(yǔ)句在中合法,比如可解析為三個(gè)空語(yǔ)句空語(yǔ)句可用于輔助產(chǎn)生語(yǔ)法合法的解析結(jié)果,如如果沒(méi)有末尾的 花點(diǎn)時(shí)間搞清楚JS中的分號(hào)規(guī)則吧~~~不管你喜歡結(jié)尾帶分號(hào)或省略分號(hào)的模式 分號(hào)允許的場(chǎng)景 分號(hào)一般允許出現(xiàn)在大部分語(yǔ)句(statement)的末尾...

    kun_jian 評(píng)論0 收藏0
  • JavaScript分號(hào)自動(dòng)插入

    摘要:中分號(hào)自動(dòng)插入轉(zhuǎn)譯自鏈接描述在中,分號(hào)自動(dòng)插入機(jī)制允許在一行代碼結(jié)尾省略分號(hào)。比如分號(hào)自動(dòng)插入規(guī)則分號(hào)插入只是一個(gè)術(shù)語(yǔ)。如果在這些位置遇到換行了,分號(hào)將被插入。 JavaScript中分號(hào)自動(dòng)插入 轉(zhuǎn)譯自:鏈接描述在JavaScript中,分號(hào)自動(dòng)插入機(jī)制允許在一行代碼結(jié)尾省略分號(hào)。你應(yīng)該養(yǎng)成一直書寫分號(hào)的習(xí)慣,與此同時(shí)掌握J(rèn)avaScript分號(hào)省略處理機(jī)制是十分重要的。因?yàn)檫@不僅有...

    dadong 評(píng)論0 收藏0
  • JavaScript分號(hào)省略

    摘要:規(guī)則三循環(huán)及空循環(huán)體的不能省略分號(hào)如最后我想說(shuō)的是分號(hào)的省略與否完全是個(gè)人的編碼風(fēng)格,所以初學(xué)者不必死鉆牛角尖,弄清楚原理才是最重要的。 傳統(tǒng)的編程語(yǔ)言中分號(hào)是不可省略的,但在看JavaScript代碼時(shí),新手常常會(huì)發(fā)現(xiàn)很多知名的大牛們都省略了分號(hào),為什么會(huì)這樣呢?其實(shí)是因?yàn)镴avaScript的自動(dòng)插入分號(hào)技術(shù),大多數(shù)情況下分號(hào)是可以省略的,下面說(shuō)說(shuō)自動(dòng)插入分號(hào)的規(guī)則。 規(guī)則一:Ja...

    Mike617 評(píng)論0 收藏0
  • 細(xì)說(shuō) Javascript 拾遺篇(三) : 自動(dòng)插入分號(hào)

    摘要:此時(shí)會(huì)自動(dòng)插入分號(hào),解析器將再次嘗試。工作原理下面的代碼沒(méi)有分號(hào),因此解析器將會(huì)自己判斷在哪些地方插入分號(hào)。前置小括號(hào)在有前置小括號(hào)的情形時(shí),解析器將不會(huì)自動(dòng)插入分號(hào)。這不僅將保證代碼整體的一致性,也將有效地避免解析器對(duì)代碼行為的錯(cuò)誤改變。 盡管 Javascript 有類似 C 的句法風(fēng)格,但是它并不強(qiáng)制在代碼中使用分號(hào),所以分號(hào)可能被省略。Javascript 并不是一個(gè)缺少分號(hào)的...

    mushang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<