问答题496/1588下面代码的输出是什么?

1var name = '123'; 2 3var obj = { 4 name: '456', 5 print: function() { 6 function a() { 7 console.log(this.name); 8 } 9 a(); 10 } 11} 12 13obj.print();
难度:
2023-05-28 创建

参考答案:

上述代码输出结果为 "123"。解释如下:

  1. 在全局作用域中声明了变量 name,值为字符串 "123"。
  2. 声明一个对象 obj,包含属性 name 和方法 print,其中 name 属性的值为字符串 "456",print 方法中定义了函数 a。
  3. 当执行 obj.print() 时,会调用 print 方法,并在其中定义了函数 a。
  4. 函数 a 中调用 console.log(this.name) 方法。由于此时 this 指向全局对象(即 window 对象),因此执行 this.name 等价于执行 window.name。
  5. 根据步骤1,window.name 的值为字符串 "123",因此最终输出结果为 "123"。

需要注意的是,在JavaScript中,this 的值取决于函数在何处被调用。如果该函数是作为对象的方法进行调用的,则 this 指向该对象;否则,this 指向全局对象。在本例中,虽然函数 a 被定义在 print 方法中,但是它并没有作为 obj 的方法进行调用,因此 this 指向全局对象。

最近更新时间:2024-08-10

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!