我有类似的情况,很好奇为什么p
不知道b
是什么,因为p
是在与b
相同的函数中定义的。
var a = "a";
window.onload = function() {
var b = "b";
var p = new Person();
p.doIknowAorB();
}
function Person() {
this.name = "nate";
}
Person.prototype = function(){
var doIknowAorB = function() {
console.log(a);
console.log(b);
};
return {
"doIknowAorB": doIknowAorB
}
}();
你在函数外访问b
。
局部作用域是面向函数的。
:
window.onload = function() {
var b = "b";
var p = new Person();
p.doIknowAorB()'
}
b
是连接到onload的匿名(未命名)函数的局部变量。
但在函数doIknowAorB在p
:
Person.prototype = function(){
function doIknowAorB() {
console.log(a);
console.log(b);
};
return {
"doIknowAorB": doIknowAorB
}
}();
显然没有b
。您可以访问a
,因为它是一个全局变量
因为b
变成了匿名函数的局部变量或私有变量
javascript中的作用域是面向函数的。
因此,它不能在function
块之外访问