JS 在 ES6 之前,只有全局作用域和函数作用域,因此在 if
和 while
之类里用 var
定义的变量是会提升到外面去的。
变量提升的过程中,函数的提升比变量的提升有更高优先级,也就是说同名下,会保留函数的定义,下面的代码输出的是 f hello() {}
function hello() {}
var hello
console.log(hello) // f hello() {}
其实这个现象也可以理解为变量的提升比函数的提升更靠前,所以定义被函数覆盖了。
2023-09-26 12:01:22
JS 在 ES6 之前,只有全局作用域和函数作用域,因此在 if
和 while
之类里用 var
定义的变量是会提升到外面去的。
变量提升的过程中,函数的提升比变量的提升有更高优先级,也就是说同名下,会保留函数的定义,下面的代码输出的是 f hello() {}
function hello() {}
var hello
console.log(hello) // f hello() {}
其实这个现象也可以理解为变量的提升比函数的提升更靠前,所以定义被函数覆盖了。