JavaScript語句可以不以;結(jié)尾的煩惱
更新時(shí)間:2007年03月08日 00:00:00 作者:
JavaScript做為一個(gè)靈活的腳本語言,其成功是我們顯而易見的。不過對(duì)于JavaScript語句可以不以";"結(jié)尾這點(diǎn),我對(duì)其一直都耿耿于懷!這個(gè)特性除了帶來語句的混亂,且使其依賴于代碼排版(換行)外,我沒有發(fā)現(xiàn)任何的優(yōu)點(diǎn)。難道是為了可以少敲一個(gè)";"?! 如果習(xí)慣了C#、C/C++等的強(qiáng)制";",會(huì)更加的覺得郁悶。
同時(shí)這個(gè)特性對(duì)于JavaScript的debug來說,是災(zāi)難性的。下面這個(gè)語句是正確的嗎?
if ( results == 'AdvancedTimeSelect' )
{
this.DoAdvancedTimeSelect();
// . . .
}
else ( results && results.length > 0 )
{
// . . .
}
// . . .
這是我在把"if"-"else"語句結(jié)構(gòu)變成"if"-"else if"-"else"結(jié)構(gòu)時(shí),不小心寫成的代碼(漏加了一個(gè)if)。如果是在C#中等強(qiáng)制要求";"作語句結(jié)尾的語言中,這樣語句就是一個(gè)明顯的語法錯(cuò)誤。
可是上面這段代碼在JavaScript中卻是沒有任何語法問題的,同時(shí)也可以"正常的"運(yùn)行。只是這個(gè)正常帶來的副作用太讓人郁悶了,當(dāng)這段代碼處于完整的一個(gè)功能模塊中時(shí),給debug帶來無盡的混亂。雖然另外一個(gè)重要的原因也是自己的眼神不好,才寫成這樣,不過我還是要對(duì)JavaScript不強(qiáng)制要求語句以";"結(jié)尾的規(guī)定耿耿于懷!
上面代碼的結(jié)果是如果第一個(gè)if條件成立,那么兩個(gè)()和兩個(gè){}內(nèi)的代碼都執(zhí)行。如果不成立,就執(zhí)行else以后的代碼,包括()和{}括起來的。因?yàn)镴avaScript把( results && results.length > 0 )當(dāng)成一個(gè)語句作為了else的分支,然后{}就是一個(gè)獨(dú)立的語句集合了。
同時(shí)這個(gè)特性對(duì)于JavaScript的debug來說,是災(zāi)難性的。下面這個(gè)語句是正確的嗎?
if ( results == 'AdvancedTimeSelect' )
{
this.DoAdvancedTimeSelect();
// . . .
}
else ( results && results.length > 0 )
{
// . . .
}
// . . .
這是我在把"if"-"else"語句結(jié)構(gòu)變成"if"-"else if"-"else"結(jié)構(gòu)時(shí),不小心寫成的代碼(漏加了一個(gè)if)。如果是在C#中等強(qiáng)制要求";"作語句結(jié)尾的語言中,這樣語句就是一個(gè)明顯的語法錯(cuò)誤。
可是上面這段代碼在JavaScript中卻是沒有任何語法問題的,同時(shí)也可以"正常的"運(yùn)行。只是這個(gè)正常帶來的副作用太讓人郁悶了,當(dāng)這段代碼處于完整的一個(gè)功能模塊中時(shí),給debug帶來無盡的混亂。雖然另外一個(gè)重要的原因也是自己的眼神不好,才寫成這樣,不過我還是要對(duì)JavaScript不強(qiáng)制要求語句以";"結(jié)尾的規(guī)定耿耿于懷!
上面代碼的結(jié)果是如果第一個(gè)if條件成立,那么兩個(gè)()和兩個(gè){}內(nèi)的代碼都執(zhí)行。如果不成立,就執(zhí)行else以后的代碼,包括()和{}括起來的。因?yàn)镴avaScript把( results && results.length > 0 )當(dāng)成一個(gè)語句作為了else的分支,然后{}就是一個(gè)獨(dú)立的語句集合了。
相關(guān)文章
JavaScript數(shù)組方法-系統(tǒng)性總結(jié)詳解
本文是小編給大家特意整理的關(guān)于js數(shù)組方法的知識(shí),非常實(shí)用,在面試筆試題中經(jīng)常用得到,有需要的朋友可以參考下2021-09-09JS使用正則表達(dá)式實(shí)現(xiàn)常用的表單驗(yàn)證功能分析
這篇文章主要介紹了JS使用正則表達(dá)式實(shí)現(xiàn)常用的表單驗(yàn)證功能,結(jié)合實(shí)例形式分析了JS基于正則表達(dá)式的表單驗(yàn)證功能原理、實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04JavaScript中檢測(cè)變量是否存在遇到的一些問題
要檢測(cè)某一變量是否存在,雖然簡(jiǎn)單但是也要細(xì)心,下面整理了幾點(diǎn),遇到類似問題的朋友可以參考下2013-11-11uniapp小程序?qū)崿F(xiàn)瀑布流布局的思路與代碼
這篇文章主要給大家介紹了關(guān)于uniapp小程序?qū)崿F(xiàn)瀑布流布局的思路與代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04H5頁(yè)面跳轉(zhuǎn)小程序的3種實(shí)現(xiàn)方式
這篇文章主要給大家介紹了關(guān)于H5頁(yè)面跳轉(zhuǎn)小程序的3種實(shí)現(xiàn)方式,說出來你可能不信,每位商家?guī)缀醵紩?huì)h5轉(zhuǎn)跳到小程序、H5轉(zhuǎn)跳至小程序的應(yīng)用范圍十分廣闊,需要的朋友可以參考下2023-08-08json對(duì)象轉(zhuǎn)為字符串,當(dāng)做參數(shù)傳遞時(shí)加密解密的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨son對(duì)象轉(zhuǎn)為字符串,當(dāng)做參數(shù)傳遞時(shí)加密解密的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06