2013-02-15 101 views
3

某些ECMAScript環境允許通過指令序言切換到特殊模式。 ECMAScript 5有「嚴格使用」,其他的如asm有自己的「使用asm」。ECMAScript多個序言指令

Directive Prologues上的文檔是用一種語言寫成的,它對我的​​理解水平有點微不足道。構建具有多個指令的指令序言的正確方法是什麼?我的直覺是:

function(){ 
    "use foo"; 
    "use bar"; 
} 

但我不確定。

+0

您的直覺是正確的。我的直覺是,沒有任何其他指令可以被任何人實際識別,至少在瀏覽器環境中不會被使用。 – 2013-02-15 20:06:42

+0

是的,這是正確的。字符串文字後跟分號(可以自動插入分號)。 – kangax 2013-02-15 20:30:38

+0

Firefox 22應該識別''使用asm';' – nilskp 2013-03-23 18:46:49

回答

1

什麼是構建一個指令序章用正確的方式多個指令?

作爲spec you linked說,

一個Directive Prologue最長序列的ExpressionStatement productions發生[在開始腳本或者函數的]和其中各的他們]完全由StringLiteral的。

所以你可以將它們串起來,每一個字符串字面語句都是一個指令;並且可以具有特定於實現的含義(僅指定使用嚴格指令)。您的預感是正確的,這應該工作:

"use bar" 
"use strict"; 'use x'; 
'use foo'; 
1

由於沒有人回答它,但我找到了答案,並且在評論中證實了我正在回答我自己的問題以關閉它。

是,在序言中使用多個指令一一列舉了其他像這樣經過:

function(){ 
    "use foo"; 
    "use bar"; 
} 

function(){ 
    "use foo"; "use bar"; 
}