我偶然發現一些人選擇稱爲序言指令。通常以「使用嚴格」着稱; JavaScript中的字符串字面量。我已經知道了一切。但共同的分母序言指令。這是什麼?這個主題上的文檔很少。最好的一個是我聯繫的問題。什麼是序言指令?
ECMAScript multiple Prologue Directives
我的問題是通用的:
它們是什麼?
它們可用於什麼?
誰使用它們?爲什麼?
我可以做他們嗎?
我應該嗎?
我偶然發現一些人選擇稱爲序言指令。通常以「使用嚴格」着稱; JavaScript中的字符串字面量。我已經知道了一切。但共同的分母序言指令。這是什麼?這個主題上的文檔很少。最好的一個是我聯繫的問題。什麼是序言指令?
ECMAScript multiple Prologue Directives
我的問題是通用的:
它們是什麼?
它們可用於什麼?
誰使用它們?爲什麼?
我可以做他們嗎?
我應該嗎?
無需文件。請看the source。
甲指令序幕是ExpressionStatement的最長序列發生作爲 程序或函數體,並且其中在 序列中的每個完全ExpressionStatement一個串文字記號組成的初始SourceElement製作 製作遵循 分號。分號可能會顯式出現,也可能由 插入自動分號插入。指令序言可能是一個空的 序列。
A使用嚴格指令是指令中的表達式語句 序列的StringLiteral或者是精確字符序列 「use strict」或「use strict」。使用嚴格指令不得包含 EscapeSequence或LineContinuation。
指令序言可能包含多個使用嚴格指令。 但是,如果發生這種情況,實施可能會發出警告。
換句話說,指令序幕是字符串文字+分號在函數或程序(頂級代碼)確切的開始的最長序列:
(function(){
"use strict"; // <-- Directive Prologue
})()
或:
(function() {
// Directive Prologue start
"foo bar"
"baz";
'123';
'';
// Directive Prologue end
})();
或:
'blah'; // <-- Directive Prologue (top-level code)
/* rest of the code here */
注意爲s OON作爲字符串字面量不是第一條語句,它不再是一個指令序章:
var x;
"use strict"; // <-- NOT a Directive Prologue
或:
(function() {
1 + "use magic"; // <-- NOT a Directive Prologue
})();
我真的不知道有足夠的瞭解,一般的序幕指令來回答,但這裏的關於[嚴格模式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)和[爲什麼您應該使用它]的更多信息(http:// cjihrig。com/blog/javascripts-strict-mode-and-why-you-should-use-it /)如果可以的話。嚴格模式是我所知道的唯一得到廣泛支持的模式。正如您所鏈接的問題所述,[ASM.js](http://ejohn.org/blog/asmjs-javascript-compile-target/)是[支持/獲得支持](http://www.2ality.com/) 2013/02/asm-js.html#支持)在幾個瀏覽器。 – 2015-03-02 06:47:30