💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
[TOC] # 3.1什么是严格模式 ![](https://img.kancloud.cn/d5/3f/d53f88bee93d655d3db3af159d581a79_1003x439.png) ## 3.2开启严格模式 ![](https://img.kancloud.cn/3e/08/3e08f7d8ce0c97e0af2d9aa758147c43_1016x77.png) ### 1.为脚本开启严格模式 ("use strict";) ![](https://img.kancloud.cn/fd/f1/fdf16d97217dbd017201c33d863c04b9_985x34.png) ![](https://img.kancloud.cn/8f/da/8fdaf40f8bfbe9ad699f6d0486d5ee6e_822x415.png) ~~~ 10版本后 <script> "use strict"; console. log ("这是严格模式。") </script> 因为"use strict"加了引号,所以老版本的浏览器会把它当作一行普通字符串而忽略。 ~~~ 有的script基本是严格模式,有的script脚本是正常模式,这样不利于文件合并,所以可以将整个脚本文件放在一个立即执行的匿名函数之中。这样独立创建一个作用域而不影响其他 script脚本文件。 ~~~ 10版本前 (旧版本) <script> hifunction (){ "use strict"; var num = 10; function fn() {} })(); </script> ~~~ ### 2.为函数开启严格模式 ("use strict") ![](https://img.kancloud.cn/1c/4f/1c4fa7c878a0507c64a14070bef58e49_956x45.png) ![](https://img.kancloud.cn/62/ba/62baece9b8ebe8796e82dc739da3d5db_579x380.png) ## 3.4严格模式中的变化 严格模式对Javascript的语法和行为,都做了一些改变。 ### 1.变量规定 (要 var 声明) ①在正常模式中,如果一个变量没有声明就赋值 ,默认是全局变量。严格模式禁止这种用法,变量都必须先用**var命令声明,然后再使用**。 ②**严禁删除**已经**声明变量**。例如, delete x;语法是错误的。 ### 2.严格模式下this指向问题 ![](https://img.kancloud.cn/ee/fa/eefa51f84af8d07d9c5e652b2f045aac_733x365.png) ### 3.函数变化 ①函数不能有重名的**参数**。 ②函数必须声明在顶层新版本的JavaScript 会引入"块级作用域”( ES6中已引入)。为了与新版本接轨,不允许在非函数的代码块内声明函数。 更多严格模式要求参考:[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict\_mode](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode)