🗒️指令序言

两个 JavaScript 语法的全局机制:预处理和指令序言。

不理解指令序言,Directive Prologs,就无法解释严格模式。

指令序言最早是为了 use strict 设计的,它规定了一种给 JavaScript 代码添加元信息的方式。

"use strict";  // 如果去掉这行指令,打印的结果将会变成 global
function f(){
    console.log(this); // null 原封不动地被当做 this 值打印了出来,这是严格模式的特征 
};
f.call(null); // 传入 null 作为 this 值

"use strict" 是 JavaScript 标准中规定的唯一一种指令序言,但是设计指令序言的目的是留给 JavaScript 的引擎和实现者一些统一的表达方式,在静态扫描时指定 JavaScript 代码的一些特性。

"no lint"; // 比如设计一种声明本文件不需要进行 lint 检查的指令
"use strict";
function doSth(){}

JavaScript 的指令序言是只有一个字符串直接量的表达式语句,它只能出现在脚本、模块和函数体的最前面。

function doSth(){}
"use strict";  // 没有出现在最前,所以不是指令序言。
var a = 1;

Last updated