mrbone / mrbone.github.io

0 stars 0 forks source link

严格模式中的 this #83

Closed mrbone closed 6 years ago

mrbone commented 6 years ago

strict mode

[TOC]

js 严格模式下会有诸多限制。

this

browser 下

非严格模式

console.log(this); // window

(function(){
  console.log(this); //window
  console.log(this === window); //true
})()

严格模式

"use strict";
console.log(this); // window

(function(){
  console.log(this); //undefined
  console.log(this === window); //false
})()

结论

node 环境下

非严格模式

console.log(this); // {}
console.log(this === exports); // true

(function(){
  console.log(this === global); //true
})()

严格模式

"use strict";
console.log(this); // {}
console.log(this === exports); // true

(function(){
  console.log(this); //undefined
  console.log(this === global); //false
})()

结论

node 环境下和浏览器环境大同小异,唯一比较大的区别是函数块外部的 this。