函数作用域相关:
-
提升(hoisting): 无论var出现在一个作用域的哪个位置,这个声明就属于当前函数的作用域,如果声明发生在函数的外的,那个这个变量则属于全局作用域。
-
this标识符:
如果一个函数内部有个this引用,那么这个this通常指向一个对象,而不是这个函数本身。但它指向的是哪一个对象,要根据这个函数是如何调用来决定。那如何调用?
function foo(){
console.log(this.bar);
}
var bar = "global";
var obj1 = {
bar: "obj1",
foo: foo
}
var obj2 = {
bar: "obj2"
}
// 四种调用形式
foo(); // "user strict"模式下,bar使用let来未定义,访问bar属性出错
obj1.foo(); // obj1
foo.call(obj2); // obj2
new foo(); // undefined
网友评论