我剛剛找到一份像樣的錯誤在我的JS代碼,我是從C++移植:字符串文字連接。這個語法在JS中意味着什麼?
var x = "aaa"
"bbb";
//In C++: x="aaabbb"
//In JS: x="aaa"
出人意料的沒有錯誤(node.js中)。
JS如何處理「bbb」?
我剛剛找到一份像樣的錯誤在我的JS代碼,我是從C++移植:字符串文字連接。這個語法在JS中意味着什麼?
var x = "aaa"
"bbb";
//In C++: x="aaabbb"
//In JS: x="aaa"
出人意料的沒有錯誤(node.js中)。
JS如何處理「bbb」?
javascript中不需要分號來結束語句。這些陳述被解釋爲設置爲x
至"aaa"
,並執行下一條語句"bbb"
,它只是一個任意字符串。
你可以把它看作是插入分號是汽車這樣的語句成爲
var x = "aaa";"bbb";
好的,謝謝!必須牢記這一點。實際上這個字符串是'SQL DELETE'表達式,其中「bbb」是'WHERE'部分:-( –
JavaScript是第一行後插入一個分號。
那麼,你真的做的是
var x = "aaa";
"bbb";
它評估的第一線,「AAA」分配給X,然後評估它不「BBB」分配給任何第二行。
您可能希望看到this question關於JS
爲分號插入規則它不處理它。什麼情況是,JavaScript的將插入一個分號爲你,"bbb"
只是一種表達:
var x = "aaa"; // JS inserts this semicolon
"bbb"; // this is a valid expression but does nothing
該功能被稱爲ASI。如果你把它+
將在連接字符串:
var x = "aaa" +
"bbb";
可以說你看到一個無聲的錯誤,但在JS,這不是一個正式的錯誤有孤兒表達式。 – dandavis
在C++中(和c)一個新的行被認爲是一個concatination(在你的情況下,無聲的char \\),在JavaScript中它被認爲是一個新行。 – Jobst