var a =
10;
function test(){
a =
100;
console.log(a);
console.log(
this.a);
var a;
console.log(a);
}
test();
var a =
100;
function test(){
console.log(a);
var a =
10;
console.log(a);
}
test();
var a =
100;
function test(){
console.log(a);
a =
10;
console.log(a);
}
test();
console.log(a);
在非严格环境下,以上三个代码分别输出什么?碰到这种题目我也是头晕眼花,稍有不慎就掉坑了。当然实际业务中不会出现这样的代码,但还是相当有必要以这样的代码来检查对 JavaScript 理解的程度。 this 的用法参照阮一峰老师的博客,主要分为三种情况,但总的原则是指向调用函数的那个对象。
全局环境:调用函数的对象实际为 window ,所以函数内的 this 指向 window ;
构造函数:通过构造函造函数生成了一个新对象,this 指向这个新对象。
对象的方法:函数作为对象的某个方法调用, this 就指向这个上级对象。
故第一道题中属于全局环境, this 指向 window ,所以输出结果为:100,10,100; 第二道题输出结果为:undefined,10;第三道题输出结果为:100,10,10;
转载请注明原文地址: https://ju.6miu.com/read-971478.html