我不会说什么,只看一下代码就足够了:
JS:
var myvar = "my value";
(function (){
console.log(myvar); //returning undefined
var myvar = "local value";
})();
现在一个非常简单的问题:变量myvar
是在执行函数之前声明的,那么为什么控制台显示未定义?
答案 0 :(得分:3)
您有两个名为myvar
的变量。一个在函数内部,一个在函数外部。
在函数内部,您可以访问函数内声明的函数(正如您所说,它已被挂起)。此时尚未为其分配值,因此它为undefined
。
之后一行,你给它分配一个值。
答案 1 :(得分:0)
正如Quentin的帖子一样。您的代码看起来像“post hoist”:
var myvar = "my value";
(function (){
var myvar;
console.log(myvar); //returning undefined
myvar = "local value";
})();
如果以这种方式看待它,很明显为什么它是未定义的。
如果您希望变量为“我的值”,则可以这样做:
var myvar = "my value";
(function (myvar){
console.log(myvar); //returning "my value"
myvar = "local value";
})(myvar);