我是JavaScript的新手,在学习的过程中我感到很困惑。不确定问题的标题。
直截了当 -
var a = 4,
say = console.log,
globalA; // defined global variable's
doSome();
doSomeMore();
function doSome() {
say(a);
var a = 5;
say(++a);
}
function doSomeMore() {
say(a);
}
当我运行它时,这会给出
未定义
6
4
为什么在doSome
执行时,a
的值为undefined
而不是4
?
答案 0 :(得分:3)
您要找的是hoisting。
它实质上意味着当您在函数中声明var a
时,它会移到顶部,并且等于以下内容:
function doSome() {
var a; //initialize the variable using hoisting
say(a); //undefined
a = 5;
say(++a);
}
如果您移除var
中的var a = 5
,则按照您的要求删除它,然后引用全局a
变量:
function doSome() {
say(a); //4
a = 5;
say(++a);
}
答案 1 :(得分:0)
更改您的代码
function doSome() {
say(a);
var a = 5;
say(++a);
}
到
function doSome(){
var a = 5;
say(a);
say(++a);
}