2015-03-02 110 views
4

我偶然發現一些人選擇稱爲序言指令。通常以「使用嚴格」着稱; JavaScript中的字符串字面量。我已經知道了一切。但共同的分母序言指令。這是什麼?這個主題上的文檔很少。最好的一個是我聯繫的問題。什麼是序言指令?

ECMAScript multiple Prologue Directives

我的問題是通用的:

它們是什麼?

它們可用於什麼?

誰使用它們?爲什麼?

我可以做他們嗎?

我應該嗎?

+0

我真的不知道有足夠的瞭解,一般的序幕指令來回答,但這裏的關於[嚴格模式](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

回答

1

無需文件。請看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 
})(); 
+0

除了「嚴格使用」之外,它們還用於什麼? ? – CyberFox 2015-03-06 06:25:56

+0

對於其他「非標準」指令,如「使用asm」,「使用6to5」等。https://twitter.com/jashkenas/status/562996829777059840 – kangax 2015-03-06 11:35:32