前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >30 - JavaScript 中的严格模式​

30 - JavaScript 中的严格模式​

作者头像
前端黑板报
发布2022-12-01 17:03:51
4770
发布2022-12-01 17:03:51
举报
文章被收录于专栏:前端黑板报前端黑板报

原文地址:https://dev.to/bhagatparwinder/strict-mode-in-javascript-4ge4

ES5 中引入严格模式,它是一种在写 JS 代码时强制使用严格模式的方法,并不是所有的浏览器都支持严格模式,所以你需要为代码添加测试用例。

优势

  1. 1. 禁止静默错误取而代之的是抛出它们。
  2. 2. 在JS引擎支持性能优化的特定情况下使用高性能代码。
  3. 3. 代码提升
    • • 对象中不存在重复 key
    • • 声明变量不使用 var 关键字
    • • 函数参数不存在重复参数

开启严格模式

  • 文件级别: 在文件开头处添加 "use strict"
  • 函数级别: 在函数体的最前面添加 "use strict"
  • 模块级别: ES6/ES2015 引入的模块默认就是严格模式。

严格模式带来的变化

1.没有使用 var 关键字声明的变量

代码语言:javascript
复制
 someVariable = 17;
 console.log(someVariable); // 17

这是一段合法的代码,即使我们没有使用 letvarconst 去声明变量,JavaScript 中也不会有问题。这样会强制使 JS 创建一个全局的属性,同时在应用中这样会导致一些问题(变量冲突或更改了全局属性)。

严格模式会通过抛出错误来解决此问题。

  1. 1. 对象中不会有重复 key
代码语言:javascript
复制
  const myObject = {
        name: "Parwinder",
        age: 34,
        car: "MiniCoop",
        name: "Bhagat"
    }
   console.log(myObject.name); // Bhagat

然而在非严格模式(松散模式)下是完全合法的,但在严格模式下会抛出错误。

  1. 1. 删除对象上不可删除的属性时报错
代码语言:javascript
复制
 "use strict"
   delete Object.prototype; // throws a TypeError
  1. 1. 函数参数不允许重复
代码语言:javascript
复制
   function sumOfNumbers(a, a, b) {
       return a + a + b;
   }

   console.log(sumOfNumbers(1, 2, 3)); // 7

上面的代码在非严格模式下也是合法的,但会导致一些意料之外的问题。2 赋值给 a ,但是结果返回的是 7 而不是预期的 6 。严格模式下将会报语法错误。

  1. 1. 非严格模式下把 NaN 赋值给一个变量不会有错误反馈,而严格模式会抛出错误。

注意:没有办法取消“严格模式”:一旦进入严格模式下,没有办法把它关闭掉。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端黑板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 优势
  • 开启严格模式
  • 严格模式带来的变化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档