2015-06-29 60 views
2

我剛剛找到一份像樣的錯誤在我的JS代碼,我是從C++移植:字符串文字連接。這個語法在JS中意味着什麼?

var x = "aaa" 
     "bbb"; 

//In C++: x="aaabbb" 
//In JS: x="aaa" 

出人意料的沒有錯誤(node.js中)。

JS如何處理「bbb」?

+1

可以說你看到一個無聲的錯誤,但在JS,這不是一個正式的錯誤有孤兒表達式。 – dandavis

+1

在C++中(和c)一個新的行被認爲是一個concatination(在你的情況下,無聲的char \\),在JavaScript中它被認爲是一個新行。 – Jobst

回答

3

javascript中不需要分號來結束語句。這些陳述被解釋爲設置爲x"aaa",並執行下一條語句"bbb",它只是一個任意字符串。

你可以把它看作是插入分號是汽車這樣的語句成爲

var x = "aaa";"bbb"; 
+0

好的,謝謝!必須牢記這一點。實際上這個字符串是'SQL DELETE'表達式,其中「bbb」是'WHERE'部分:-( –

2

JavaScript是第一行後插入一個分號。

那麼,你真的做的是

var x = "aaa"; 
     "bbb"; 

它評估的第一線,「AAA」分配給X,然後評估它不「BBB」分配給任何第二行。

您可能希望看到this question關於JS

2

爲分號插入規則它不處理它。什麼情況是,JavaScript的將插入一個分號爲你,"bbb"只是一種表達:

var x = "aaa"; // JS inserts this semicolon 
"bbb"; // this is a valid expression but does nothing 

該功能被稱爲ASI。如果你把它+將在連接字符串:

var x = "aaa" + 
     "bbb"; 
相關問題