ECMAScript多个序言指令

5
某些ECMAScript环境允许通过指示前言(Directive Prologue)切换到特殊模式。ECMAScript 5有"use strict",而其他一些环境如asm则有自己的指示语,如"use asm"。
Directive Prologues文档中,用的语言对我来说有点晦涩难懂。构建多个指令的指示前言的正确方式是什么?我的直觉是这样的:
function(){
  "use foo";
  "use bar";
}

但我不确定。


你的直觉是正确的。我的直觉是除了"use strict"指令之外,在浏览器环境中没有其他指令被认可。 - John Dvorak
是的,没错。字符串字面量后跟一个分号(分号可以自动插入)。 - kangax
Firefox 22 应该能够识别 "use asm"; - nilskp
2个回答

3
“如何正确构建包含多个指令的指令序言?”根据您提供的链接,一个指令序言是指在脚本或函数开头出现的最长的一系列ExpressionStatement产生式,每个产生式都完全由StringLiteral组成。因此,您可以将它们串联在一起,这些字符串文字语句中的每一个都是一个指令,并且可以具有实现特定的含义(只有使用严格模式指令是指定的)。您的直觉是正确的,下面的代码应该可以工作:
"use bar"
"use strict"; 'use x';
'use foo';

1

由于没有人回答,但我找到了答案,并在评论中得到确认,因此我回答自己以关闭它。

是的,要在序言列表中使用多个指令,请将它们一个接一个地列出,如下所示:

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

或者

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接