吊装是如何工作的?函数和变量的区别
how hoisting works ? difference between function and variable
我可以知道这段代码是如何执行的吗?
function scope() {
return hosting;
function hosting() {
var hosting = '15';
}
var hosting = 12;
}
console.log(typeof scope())
这里是这段代码return函数,我们现在js引擎会将声明移到顶部所以我们得到函数,
function scope() {
return hosting;
var hosting = 12;
}
console.log(typeof scope())
但现在为什么它不是 return 号码?,但我知道我们需要使用 let 来避免这种情况
当 JS 提升一个函数时,它会知道 return 实际函数,但是当它是一个变量声明时,它会使用 undefined
作为值来提升它。除非达到实际的赋值行,否则它不会有值。
它不是 return 数字 12,因为 提升 仅适用于声明实际变量,而不是为其赋值。
这意味着您的编译器代码看起来像这样:
function scope() {
var hosting;
return hosting;
hosting=12;
}
另外请记住return
之后的所有内容都不会执行。
如果您想要 console.log 到 return 号码,您应该将托管声明放在 return 之上,如下所示:
function scope() {
var hosting = 12;
return hosting;
}
console.log(typeof scope())
我可以知道这段代码是如何执行的吗?
function scope() {
return hosting;
function hosting() {
var hosting = '15';
}
var hosting = 12;
}
console.log(typeof scope())
这里是这段代码return函数,我们现在js引擎会将声明移到顶部所以我们得到函数,
function scope() {
return hosting;
var hosting = 12;
}
console.log(typeof scope())
但现在为什么它不是 return 号码?,但我知道我们需要使用 let 来避免这种情况
当 JS 提升一个函数时,它会知道 return 实际函数,但是当它是一个变量声明时,它会使用 undefined
作为值来提升它。除非达到实际的赋值行,否则它不会有值。
它不是 return 数字 12,因为 提升 仅适用于声明实际变量,而不是为其赋值。
这意味着您的编译器代码看起来像这样:
function scope() {
var hosting;
return hosting;
hosting=12;
}
另外请记住return
之后的所有内容都不会执行。
如果您想要 console.log 到 return 号码,您应该将托管声明放在 return 之上,如下所示:
function scope() {
var hosting = 12;
return hosting;
}
console.log(typeof scope())