类的函数自动 use strict

本文探讨了JavaScript类函数中的严格模式,指出在严格模式下,类的方法内部的this会指向undefined而非window。这一特性对于理解和避免常见错误至关重要,尤其是在执行通过变量调用的类方法时。

类class中的函数中会自动使用严格模式,相当于在该函数最顶部加了一个use strict;,所以当我们把类中的方法赋值给一个变量并执行该变量时,该变量里面的this会指向undefined而不是window。很有意思

### JavaScript中 'use strict' 的使用 在JavaScript里,`'use strict'` 是一个指示代码以严格模式运行的指令。可以在全局作用域或函数作用域中使用该指令。 - **全局作用域使用**:将 `'use strict'` 放在脚本文件的顶部,那么整个脚本都会以严格模式运行。 ```javascript 'use strict'; // 以下代码都处于严格模式 const num = 10; ``` - **函数作用域使用**:把 `'use strict'` 放在函数内部,只有该函数内部的代码会以严格模式运行。 ```javascript function strictFunction() { 'use strict'; // 该函数内的代码处于严格模式 let variable = 'example'; } ``` ### 'use strict' 的作用 严格模式对JavaScript代码施加了更严格的语法和语义规则,主要作用如下: - **消除一些不合理、不严谨的语法**:在非严格模式下,给未声明的变量赋值会隐式创建全局变量,而严格模式会抛出错误。 ```javascript // 严格模式下会报错 'use strict'; x = 10; ``` - **增强安全性**:严格模式禁止使用一些可能导致安全漏洞的特性,例如 `with` 语句,在严格模式下使用会报错。 ```javascript 'use strict'; with (Math) { console.log(PI); // 严格模式下会报错 } ``` - **简化代码的调试**:严格模式下,一些静默失败的操作会抛出错误,让开发者能更早发现问题。例如,在严格模式下,对只读属性赋值会抛出错误。 ```javascript 'use strict'; const obj = {}; Object.defineProperty(obj, 'prop', { value: 10, writable: false }); obj.prop = 20; // 严格模式下会报错 ``` ### 'use strict' 与 `forEach` 的关联 在引用[1]中提到,`forEach` 的回调函数在严格模式下对 `this` 的处理与非严格模式有所不同。在非严格模式下,`forEach` 回调函数中的 `this` 默认指向全局对象(在浏览器中是 `window` 对象);而在严格模式下,如果没有明确指定 `this` 的值,`forEach` 回调函数中的 `this` 是 `undefined`。 ```javascript 'use strict'; const arr = ['a']; arr.forEach(function() { console.log(this); // 输出 "undefined" }); ``` 在非严格模式下,以下代码中的 `this` 会指向全局对象: ```javascript const arr = ['a']; arr.forEach(function() { console.log(this); // 在浏览器中输出 window 对象 }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值