作用域和 this

    xiaoxiao2021-12-14  19

    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

    最新回复(0)