🗒️指令序言
两个 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