讲师中心 微信公众号
AI工具推荐 视频效率加速

javascript strict模式是什么_为什么要使用它【教程】

落敏君_3464

落敏君_3464

发布时间:2026-01-20 22:49:02

|

652人浏览过

|

来源于php中文网

原创

严格模式是通过"use strict"字符串启用的执行规则开关,需置于文件或函数首行且格式正确,能使隐式全局变量、重复参数等错误提前暴露。

javascript strict模式是什么_为什么要使用它【教程】

严格模式不是新语法,而是一行能立刻改变 JavaScript 执行规则的开关——"use strict"。它让原本“悄悄通过”的错误(比如漏写 let 就直接赋值)当场报错,而不是污染全局、掩盖问题、等线上崩了才暴露。

怎么启用才真正生效?

看似简单,但写错位置就等于没开:

  • 全局启用:必须是 .js 文件或 <script> 标签内的第一行有效语句,前面只能有注释或空行,不能有 console.log() 或任何表达式
  • 函数级启用:必须是函数体内的第一行,且不能被包裹在 iffor 等块中(if (true) { "use strict"; } 无效)
  • "use strict" 必须是字符串字面量——引号、大小写、拼写全要对,'use strict' 也行,但 use strict(没引号)或 "use strict";(分号后换行再写代码)会失效
"use strict";
x = 10; // ReferenceError: x is not defined

为什么现在还值得手动加?

ES6 模块(import/export)、class、箭头函数这些现代语法默认启用严格模式,但很多场景仍需你亲手加:

Revealjs Presentations
Revealjs Presentations

创建、编辑并部署 reveal.js 演示文稿为单个 HTML 文件,可选自定义 CSS。适用于需要制作演示文稿、幻灯片或宣传材料时使用。

下载
  • 独立的 .js 脚本(比如老项目里的工具函数、统计埋点脚本)
  • 动态生成的代码(如用 eval("") 或拼接字符串执行逻辑)
  • 构建工具未覆盖的 IIFE 包裹代码(Webpack/Vite 合并多个模块后,"use strict" 若不在合并后文件顶部,就失效)
  • 调试遗留代码时,加一行就能快速暴露 this 绑定错误或隐式全局变量

哪些错误会从“静默”变“炸裂”?

这是严格模式最实在的价值——把模糊行为变成明确报错:

立即学习Java免费学习笔记(深入)”;

  • undeclared = "oops"ReferenceError(不再挂到 window 上)
  • function foo(a, a) { }SyntaxError(参数重复直接不解析)
  • delete Object.prototypeTypeError(不可删属性不再假装成功)
  • with(obj) { }SyntaxError(直接禁用,避免作用域混乱)
  • 普通函数调用:foo() 中的 thiswindow 变成 undefined,防止误改全局状态
"use strict";
function test() {
  console.log(this); // undefined(浏览器中)
}
test();

最容易被忽略的是:严格模式不是“越严越好”,而是“让错误早露脸”。它不改变功能,只改变错误出现的时机和方式。如果你的代码在非严格模式下靠“容错”跑通,那加了 "use strict" 后大概率会立刻报错——这不是模式的问题,是代码本来就有隐患。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

265

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

386

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

335

2025.12.24

全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

3645

2025.09.18

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

1490

2025.09.18

c++ 全局变量
c++ 全局变量

本专题整合了c++全局变量的使用、定义、作用域等等内容,阅读专题下面的文章了解更多详细内容。

179

2026.03.17

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1538

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2204

2023.09.04

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

0

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn