当我们使用模板文字时,`usestrict`不起作用

如果我use strict用反引号/模板文字括起来,“使用严格”不会按预期工作。你能分享一下背后的原因吗?是否有任何类似的异常语句模板文字无法按预期工作?

`use strict`;
x = 3.14;  // Ideally it should  cause an error (as x is not defined).
alert(x);

回答

它就是这么设计的。

从ES6 规范:

14.1.1 指令序言和使用严格指令

甲指令序幕是最长序列ExpressionStatement存在作为初始生产StatementListItemModuleItem一个的制作函数体,一个ScriptBodyModuleBody并且其中每个ExpressionStatement序列中完全由一个的串文字标记后跟一个分号。分号可以显式出现,也可以通过自动分号插入来插入。指令序言可能是一个空序列。

Use Strict Directive 是Directive Prologue 中的ExpressionStatement,其StringLiteral要么是确切的代码单元序列,"use strict"要么是'use strict'. Use Strict Directive 不能包含EscapeSequenceLineContinuation

指令序言可能包含多个使用严格指令。但是,如果发生这种情况,实现可能会发出警告。

强调我的。

它明确指出,要使 Use Strict 指令起作用,它必须用单引号或双引号编写,但为此目的根本不允许使用模板文字。


以上是当我们使用模板文字时,`usestrict`不起作用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>