提问人:zi zi 提问时间:10/27/2023 最后编辑:zi zi 更新时间:10/27/2023 访问量:45
函数中的 var 给出 undefined [duplicate]
var inside the function giving undefined [duplicate]
问:
更新 1:为什么我变得不明确
我正在尝试赚取js吊装。 当我把它放在函数中时,我变得未定义,但是当我不放置任何函数时,我得到了输出。 当我使用 let I are error 在下面提供代码片段
var numOfBeers = 5;
function getMoreBeers() {
console.log('I have this many beers: ' + numOfBeers); // undefined
var numOfBeers = 25;
return numOfBeers;
}
console.log('I now have this many beers: ' + getMoreBeers());
I have this many beers: undefined
I now have this many beers: 25
console.log('I have this many beers: ' + numOfBeers);
var numOfBeers = 25;
VM336:2 I have this many beers: 25
console.log('I have this many beers: ' + numOfBeers);
let numOfBeers = 25;
VM333:1 Uncaught SyntaxError: Identifier 'numOfBeers' has already been declared
答:
0赞
Mr. Polywhirl
10/27/2023
#1
因为你通过声明一个同名的内部变量来隐藏外部变量。
var numOfBeers = 5;
function getMoreBeers() {
console.log('I have this many beers: ' + numOfBeers); // undefined
var numOfBeers = 25; // Because you defined a local var here!
return numOfBeers;
}
console.log('I now have this many beers: ' + getMoreBeers());
这里是与上面相同的代码,但变量为“hoisted”:
var numOfBeers = 5;
function getMoreBeers() {
var numOfBeers; // Because you defined a local var here!
console.log('I have this many beers: ' + numOfBeers); // undefined
numOfBeers = 25; // Now we assign...
return numOfBeers;
}
console.log('I now have this many beers: ' + getMoreBeers());
更改内部名称:
var numOfBeers = 5;
function getMoreBeers() {
console.log('I have this many beers: ' + numOfBeers); // undefined
var localNumOfBeers = 25; // Local var here!
numOfBeers = localNumOfBeers; // Update the outer var
return localNumOfBeers;
}
console.log('I now have this many beers: ' + getMoreBeers());
这将产生:
I have this many beers: 5
I now have this many beers: 25
评论
0赞
zi zi
10/27/2023
嘿,但是在函数中为什么不打印 25,因为下面的语句我们使用 ---> numOfBeers = localNumOfBeers;更新外部 var
0赞
Ruan Mendes
10/27/2023
这与影子无关,只是吊装,不是吗?删除外部变量,行为是相同的。您应该解释一下,对于提升,就好像在函数(提升)的顶部添加了一个新语句,并将函数开头的变量声明为 undefinedvar localNumOfBeers;
评论
console.log
function getMoreBeers() { var numOfBeers; console.log(...); numOfBeers = 25; }
var