纪录一下昨天的react学习,
js严格模式是一个能够使代码规范的好东西,但是严格模式会有副作用,就是this指向问题
示例:
function fun1() {
'use strict'
console.log(this) // undefined
}
fun1()
function fun2() {
console.log(this) // window
}
fun2()
可以看到,在使用严格模式下,打印的this为undefined,这是因为,在严格模式下,如果没有明确的指出this指向,例如apply,call,bind。并且没有被以属性的方式调用,this指向就为undefined,示例如下:
class cls{
speak() {
'use strict' // 其实可以不写,因为class内会自动调用严格模式,写出是为了更好理解
console.log(this)
}
}
let cl = new cls().speak // 直接将函数赋值给cl
cl() // undefined 因为这是this的指向本应该是window,但是严格模式却是undefined
let c2 = new cls() // 正常创建实例
c2.speak() // 以示例方式调用函数时,this打印出的为 c2这个实例对象
c2.speak()便是以属性的方式调用
以上就是本次学习严格模式的副作用