首页 > 试题广场 >

请问以下JS代码会做什么样的输出 let a = 'w' l

[单选题]
请问以下JS代码会做什么样的输出
let a = 'w'
let obj = {
  a: 'o',
  print: function() {
    console.log(this.a);
  },
}
let p = obj.print;
obj.print();
p();


  • o、o
  • w、w
  • o、w
  • o、undefined
“与 var 关键字不同,使用 let 在全局作用域中声明的变量不会成为 window 对象的属性(var 声明的变量则会)” ---《JavaScript 高级程序设计》
发表于 2021-12-10 09:00:06 回复(16)
将对象的方法赋值给变量后,this指向会丢失,所以会去全局环境中找,但此题a是let声明的,,故全局中没有a
发表于 2021-12-09 20:19:39 回复(0)
与 var 关键字不同,使用 let 在全局作用域中声明的变量不会成为 window 对象的属性(var 声明的变量则会)
发表于 2022-01-06 17:53:38 回复(0)
本题有一个坑,外层的a不是用var定义的,而是用let定义。所以不会绑定到window对象上,所以输出undefined
发表于 2022-01-26 22:26:26 回复(0)
每次我信心满满的时候,就错了,呜呜
发表于 2022-08-28 09:48:27 回复(0)
与 var 关键字不同,使用 let 在全局作用域中声明的变量不会成为 window 对象的属性(var 声明的变量则会)
发表于 2022-07-17 00:05:31 回复(0)
将对象的方法赋值给变量后,this指向会丢失,所以会去全局环境中找,但此题a是let声明的,,故全局中没有a
发表于 2022-06-20 10:03:47 回复(0)
没注意定义在window对象下的a是用let关键字声明的;如果是用var关键字,那结果就是"w"了
发表于 2022-04-03 12:14:39 回复(0)
let变量不会挂载到window上
发表于 2023-10-19 00:08:53 回复(0)
插眼
发表于 2023-07-28 20:57:09 回复(0)
使用let定义的变量不会绑定在window上
发表于 2023-05-26 21:38:40 回复(0)
如果 变量a是用var定义的,就不会出现underfined
发表于 2022-11-02 20:25:31 回复(0)
let作用域不能是Window
发表于 2022-11-02 17:51:06 回复(0)
注意这里a的声明使用的let,不会成为window的属性,其次this无法传递,所以第二个是undefined
发表于 2022-06-23 11:10:49 回复(0)
考查let和var定义变量的区别 以及不同方式调用函数时this的指向问题 定义新的变量访问thus指向这个对象变量 所以在函数内部寻找变量 发现是o 而直接访问函数this指向window 发现只有一个let定义的变量a 他不会挂载到window下 所以是undefined
发表于 2022-01-30 17:47:32 回复(0)