我偶然发现了人们选择称之为Prologue Directives的东西。更常见的是使用"在JavaScript中使用strict&#34 ;; 字符串文字。我已经知道了。但共同点是Prologue Directive。这是什么?关于这个主题的文献很少。最好的一个是我联系的问题。
ECMAScript multiple Prologue Directives
我的问题是通用的:
他们是什么?
它们可以用于什么?
谁使用它们以及为什么?
我可以制作它们吗?
我应该吗?
答案 0 :(得分:1)
无需文档。只需查看the source。
指令序言是ExpressionStatement的最长序列 作为一个初始SourceElement产生的产品 程序或FunctionBody和每个ExpressionStatement在哪里 sequence完全由一个StringLiteral标记组成 分号。分号可以明确显示或者可以插入 自动分号插入。指令序言可能是空的 序列
使用严格指令是指令中的表达式 序列,其StringLiteral是确切的字符序列 "使用严格"或者'使用严格的'。使用严格指令可能不包含 EscapeSequence或LineContinuation。
指令序言可能包含多个使用严格指令。 但是,如果发生这种情况,实施可能会发出警告。
换句话说,Directive Prologue是函数或程序(顶级代码)的确切开头处字符串文字+分号的最长序列:
(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 */
请注意,只要字符串文字不是第一个语句,它就不再是指令序言:
var x;
"use strict"; // <-- NOT a Directive Prologue
或:
(function() {
1 + "use magic"; // <-- NOT a Directive Prologue
})();