2013-02-15 74 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"; 
}