Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • CSS

  • JavaScript

    • 兼容ie7的水平无限滚动
    • 节流防抖
    • 数组乱序
    • 开启全屏
    • 数据类型
    • 变量提升
    • this调用指向
    • 原型及原型扩展
    • js获取元素属性精度问题
    • setTimeout和setInterval
    • 数组判断
    • dom节点添加或插入元素
    • var、let和const的区别
    • 判断ellipsis是否省略生效
    • 使用ResizeObserver监听元素size变化
    • js自定义事件
    • use strict详解
    • 私有属性
    • js实现类的方式
    • call和apply的理解和使用
    • js失焦和点击事件顺序冲突
    • js中不常见但非常实用的运算符
    • for of和for in的区别
    • defer和async的区别
    • promise值穿透
    • js为什么会出现数字精确度丢失
    • js禁用F12开发者模式
    • 使用scrollTop和scrollTo滚动到目标位置
    • js实现打字机效果
    • 多种方式实现数组去重
    • 替换使用setTimeout
    • encodeURI和encodeURIComponent的区别
    • canvas实现弹跳小球
    • js实现跨标签页通信
    • 事件循环与微任务、宏任务
    • 浏览器存储数据方式
    • 常见的meta元数据使用
    • 使用InterSectionObserver判断元素区域(chatGPT)
  • 工具

  • Vue

  • antdv踩坑记录

  • Vue3

  • 前端
  • JavaScript
kros
2023-01-10

use strict详解

严格模式是 JavaScript 中的一种指令,通过在脚本文件或函数的顶部添加"use strict"来启用。它引入了一些额外的限制和规范,以提高代码的质量、安全性和可维护性。

# 1、变量必须声明,禁止使用未声明的变量

在严格模式下,所有的变量都必须通过 var、let 或 const 关键字进行声明,否则会抛出 ReferenceError。

"use strict";
x = 10; // ReferenceError: x is not defined
function foo() {
  y = 20; // ReferenceError: y is not defined
}

1
2
3
4
5
6

# 2、删除变得更加严格

在严格模式下,无法删除函数、函数参数或通过 var 关键字声明的变量。

"use strict";
var x = 10;
delete x; // SyntaxError: Delete of an unqualified identifier in strict mode.

1
2
3
4

# 3、禁止使用重复的参数名

在严格模式下,函数参数名必须唯一,否则会抛出语法错误。

"use strict";
function foo(x, x) { // SyntaxError: Duplicate parameter name not allowed in this context
  return x + x;
}
foo(2, 3);

1
2
3
4
5
6

# 4、禁止使用八进制字面量

在严格模式下,以 0 开头的数字字面量将被视为无效的八进制数字,而不是十进制数字。

"use strict";
var x = 012; // SyntaxError: Octal literals are not allowed in strict mode.

1
2
3

# 5、禁止使用 eval() 修改作用域

在严格模式下,eval() 函数执行的代码将在自己的独立作用域中运行,而不是共享所在作用域的变量。

"use strict";
var x = 10;
eval("var x = 20;"); // eval内部的x不会影响外部的x
console.log(x); // 10

1
2
3
4
5

# 6、禁止使用 eval() 和 arguments 作为变量名

在严格模式下,eval 和 arguments 不能被重新赋值,作为变量名使用会抛出语法错误。

"use strict";
var eval = 10; // SyntaxError: Unexpected eval or arguments in strict mode
var arguments = 20; // SyntaxError: Unexpected eval or arguments in strict mode

1
2
3
4

# 7、this 值为 undefined

在严格模式下,未绑定到任何对象的函数中的 this 值将为 undefined,而不是默认情况下指向全局对象。

"use strict";
function foo() {
  console.log(this);
}
foo(); // undefined

1
2
3
4
5
6
上次更新: 2025/09/05, 8:09:00
js自定义事件
私有属性

← js自定义事件 私有属性→

最近更新
01
Find the next perfect square
09-05
02
Regex validate PIN code
09-05
03
Find the odd int
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 kros king
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev