Question 1
function bar(){
//....
}
在chrome 环境下:
console.log(this.bar)//此时会显示bar函数
console.log(window.bar)//此时会显示bar函数
所以可以看作bar绑定到了window上.
那么:
在node环境下:
console.log(this.bar)//undefined
console.log(global.bar)//undefined
此时bar被绑定到了什么上面?
Question 2
var obj = {};
console.log(obj.a)//undefined
正常情况下,这里应该会报obj.a is not defined.
实际上这里执行这段代码是给了obj一个a的属性,并将值赋值为undefined.
这是我在一本书中看到了,突然一下不记得答案了.
我记得,这里是一个对象的bug,所以必须这样去处理.
在这里我想知道,这个bug是什么
Node.js那个有人回答的挺好的就不说了,在CHROME下全局叫window,而在node.js下全局叫global。
在JS中,undefined和undeclared是两回事,如果声明过一个变量但还未赋值,那它是“未定义”的,而一个变量未曾声明就调用,那它是“未声明”的。
一般来说报错:referenceError: xx is not defined会让人误解为变量是undefined,而实际上更准确来讲它是undeclared的。
而不管是undefined还是undeclared,typeof的处理方式都是返回undefined