javascript中什么是严格模式

javascript中什么是严格模式
最新回答
长发与酒

2026-04-08 07:37:26

JavaScript严格模式是一种更严格的代码执行环境,通过特定语法激活,旨在提升代码安全性和可维护性。

一、核心特性

  1. 错误检测强化

    禁止未声明变量直接赋值(如v=1会报错,必须用var/let/const声明)。

    禁止重复的对象属性名或函数参数名(如{p:1, p:2}报错)。

    禁止八进制数字表示法(如0100报错)。

  2. 安全限制

    this在函数内默认指向undefined(非全局对象),防止意外污染全局作用域。

    禁止删除不可配置的属性(如delete Object.prototype报错)。

    禁用with语句和arguments.callee,避免动态作用域带来的不确定性。

  3. 作用域与执行优化

    eval创建独立作用域,不再能定义全局变量。

    arguments对象不再追踪参森漏数变化(如函数内修改参数不影响arguments[0])。

  4. 未来兼容性

    强制函数声明在顶层作用域,为块级作用域(如let/const)做准备。

    新增保留字(如let、yield),禁止作为变量名使用。

二、启用方式

  1. 全局启用:脚本文件首行添加"use strict";(需确保无实际执行代码在前)。
  2. 局部启用:在函数体内首行添加"use strict";,仅影响该函数。

三、典型行为差异

  • 变量声明:未声明变量赋值直接报错(非静默失败)。
  • 只读属性赋值:如Object.defineProperty设置的不可写属性会报错。
  • 函数调用栈:禁止访问arguments.caller和function.caller。

四、设计目的

  • 消除语言历史遗留的怪异行雀春友为(如隐式全局变量)。
  • 提升代码安顷槐全性,减少潜在漏洞。
  • 为ECMAScript新版本(如ES6+)的严格规范过渡。

注意:严格模式在主流浏览器(含IE10+)中均支持,但旧版浏览器可能忽略"use strict"指令。