JavaScript pragma是什么?

12

当你想要让JavaScript文件(或函数)以“严格模式”解析时,你可以使用...

"use strict";

请将以下内容放在你的 JavaScript 文件(或函数)的顶部。

这个 "use strict"; 是所谓的 "pragma"。

我的问题是:什么是 pragma? 我能想到的最接近的东西是一个 "directive"。


4
我猜它是以C语言中的#pragma预处理指令命名的。 - VisioN
@VisioN 我认为你链接页面中的这行话非常清晰明了:“‘#pragma’指令是C标准规定的一种方法,用于向编译器提供除语言本身之外的其他信息。” - Niels Bom
2个回答

10
编译器指令被称为“pragma”(即“实用信息”)。

http://en.wikipedia.org/wiki/Preprocessor_directive

这是一个预处理指令,或者说像是代码元数据。其他语言或编译器也有类似的用法。它提供了如何解释接下来的代码的实用信息。
据我所知,这是JavaScript中唯一的一种。这是一种强制现代解释器以特定方式运行的方法,但不会破坏旧的解释器。

debugger;算作一个编译指令吗? - John Dvorak
@JanDvorak 我认为不是。我相信 debugger 是一个关键字。它并没有描述如何执行其他代码,它只是在执行时做一些事情,就像任何其他关键字一样。 - Alex Wayne
1
@JanDvorak,通常称为“语句”。我认为“use strict”是一个“编译指示”,因为它不是在行内解释的,而debugger是。 - Dagg Nabbit
4
它确实不是 JavaScript 中唯一的一个(参见 http://www-archive.mozilla.org/js/language/js20-2002-04/core/pragmas.html)。 - Eliran Malka
2
@EliranMalka 今天就是了。在Wayback Machine找到你的存档副本后,我可以诚实地说,2002年4月份的JavaScript 2.0草案规范与现代几乎没有什么关联。=)特别是因为今天许多人甚至都没有听说过那些编译指示,除了use strict - user458541

5

⚡️Pragma是实用信息(pragmatic information)的缩写。通俗易懂地说,实用指的是明智和实际的意思。在编程中,pragma是指包含有关编译器、解释器或汇编器应如何处理程序的有用信息的代码

Pragma本身不对编程语言产生影响,其语法也可能变化。它们只会影响编译器的行为。JavaScript 也有几个 pragma,其中一个是 strict

'use strict';

通过上述指示,JavaScript代码将在严格模式下执行。在严格模式下,不允许使用错误的语法,不进行变量提升,会显示静默错误等。它有助于编写更安全和优化的JavaScript代码。

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