|
同時這個特性對于JavaScript的debug來說,是災難性的。下面這個語句是正確的嗎?
if ( results == 'AdvancedTimeSelect' )
{
this.DoAdvancedTimeSelect();
// . . .
}
else ( results && results.length > 0 )
{
// . . .
}
// . . .
這是我在把"if"-"else"語句結構變成"if"-"else if"-"else"結構時,不小心寫成的代碼(漏加了一個if)。如果是在C#中等強制要求";"作語句結尾的語言中,這樣語句就是一個明顯的語法錯誤。
可是上面這段代碼在JavaScript中卻是沒有任何語法問題的,同時也可以"正常的"運行。只是這個正常帶來的副作用太讓人郁悶了,當這段代碼處于完整的一個功能模塊中時,給debug帶來無盡的混亂。雖然另外一個重要的原因也是自己的眼神不好,才寫成這樣,不過我還是要對JavaScript不強制要求語句以";"結尾的規定耿耿于懷!
上面代碼的結果是如果第一個if條件成立,那么兩個()和兩個{}內的代碼都執行。如果不成立,就執行else以后的代碼,包括()和{}括起來的。因為JavaScript把( results && results.length > 0 )當成一個語句作為了else的分支,然后{}就是一個獨立的語句集合了。
JavaScript技術:JavaScript語句可以不以;結尾的煩惱,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。