更新1:为什么我变得未定义
我正在努力赚取js提升。 当我将它放入函数中时,我得到了未定义的结果,但是当我不放入任何函数时,我得到了输出。 当我使用 let 时出现错误 提供下面的代码片段
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
因为您通过声明同名的内部变量来隐藏外部变量。
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());
更改内部名称:
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