声明时带有内部/嵌套函数的javascript中变量的范围

时间:2018-11-03 11:10:53

标签: javascript node.js var

for model in models:
       print(str(model))
       pprint(model.docvecs.most_similar(positive=["Machine learning"], topn=20))

未定义打印

var name="prevName";
function printName(){
   console.log(name);
   var name="newName";
}
printName();

打印prevName

我不明白为什么

可以请任何人解释为什么吗?

提前谢谢。...

2 个答案:

答案 0 :(得分:0)

在第一种情况下,内部var name(与全局name不同)将hoisted移到函数顶部。所以和

一样

var name = "prevName";
function printName(){
   var name; // name = undefined
   console.log(name);
   name = "newName";
}
printName();

在第二种情况下,您要处理全局变量。

答案 1 :(得分:0)

JavaScript(和函数声明)中的变量被挂起,即它们的声明在编译时移动,直到其作用域的开始(函数在其in或模块中)。 但是任务并没有被取消。这就是为什么第一个函数打印未定义的原因-局部变量替换了外部变量,但是直到调用日志后才定义它。