You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript可用Pragma列表咨询:除use strict外还有哪些?

JavaScript中可用的Pragma完整列表

嘿,我来帮你梳理一下JavaScript里所有常见的pragma指令——确实除了use strict之外,很多人都容易忽略其他的,毕竟有些是特定场景或环境下才会用到的。

标准ECMAScript定义的Pragma

这些是官方规范明确规定的,所有符合标准的JS引擎都应该支持:

  • use strict:这是你已经熟悉的,ES5引入的严格模式开关。在脚本或函数开头添加'use strict';(或注释形式// use strict),会启用严格的语法检查和行为约束,比如禁止未声明的变量、不允许this指向全局对象等。
  • use asm:ES2015(ES6)引入的asm.js相关pragma,用于声明这段代码是asm.js模块。asm.js是JavaScript的一个高性能子集,引擎可以对其做极致优化(比如提前编译成机器码)。不过现在WebAssembly(Wasm)普及后,这个pragma的使用率已经很低了。语法示例:
    function MyAsmModule() {
      'use asm';
      // 这里编写asm.js代码
    }
    

特定引擎/运行环境特有的Pragma

这些是不同JS引擎或运行环境(比如Node.js、V8、Babel等)扩展的pragma,仅在对应环境中生效:

Node.js/V8 相关

  • use nodejs_strict:Node.js提供的比标准use strict更严格的模式,会额外禁用一些Node.js特有的非严格行为,比如CommonJS模块中允许的某些隐式全局变量。不过这个pragma的使用场景比较小众,大部分场景下标准use strict就足够了。
  • use esm:用于在CommonJS格式的.js文件中启用ES模块语法(比如import/export)。在文件开头添加// use esm,Node.js会将该文件当作ES模块处理,而非默认的CommonJS。不过现在Node.js已支持通过.mjs扩展名或package.json的type字段切换模块系统,这个pragma的使用也逐渐减少。

Babel 相关

Babel允许使用pragma指定特定转换规则,常见的有:

  • use react:配合@babel/plugin-transform-react-jsx使用,用来指定JSX转换时使用的替代函数。比如用Preact替代React时,可以写:
    // use preact
    const Component = () => <div>Hello</div>;
    
    这样Babel会把JSX转换成Preact.createElement而非默认的React.createElement。

TypeScript 相关

作为JS的超集,TypeScript也支持一些pragma调整编译行为:

  • use strict:和JS中的作用一致,启用严格模式的同时,TypeScript会开启额外的严格类型检查(比如strictNullChecks等)。
  • use unknown:用于指定类型检查时,将未知类型变量当作unknown而非any,这是更严格的类型约束方式。不过现在更多通过tsconfig.json的strict配置开启,直接用pragma的情况不多。

注意事项

  • 大部分非标准pragma都是特定环境的扩展,跨环境使用可能会被忽略或报错。
  • 随着JS生态发展,很多旧pragma已被更完善的配置方式替代(比如用配置文件代替文件级pragma),使用前最好确认当前环境的支持情况。

内容的提问来源于stack exchange,提问作者Temp O'rary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:50:03