We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
注意⚠️ 变量提升不适用于 let 、const。一般提及都是var、function。
提起 变量提升 就要提起 预编译。分为以下4步:
变量提升
预编译
if (false) { var a = 'ybf' } console.log(a)//undefined
var a function a() {} console.log(a)//function...
function a(a1, b1) { function a1() {} console.log(a1) } a('a传参', 'b传参')//function a1() { … }
function name() { var a = b = 'ybf' } name() // console.log(a)//is not defined console.log(b)//"ybf"
b 会直接挂载到全局变量上。
function a(a1, b1) { console.log(a1)//function var a1 = 'var' console.log(a1)//var function a1() {} console.log(a1)//var } a('a传参', 'b传参')
可以看到形参直接没有出现,我们可以从预编译的过程中找到答案。
函数声明在最后声明,覆盖了形参。
a1的赋值,覆盖了函数。
函数声明优先级会高于值声明。
变量提升忽略 块级作用域
如果一个值没有声明就使用,不会变量提升。但是当执行时,会直接挂载到全局环境上。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
变量提升
注意⚠️ 变量提升不适用于 let 、const。一般提及都是var、function。
提起
变量提升
就要提起预编译
。分为以下4步:具体测试
变量提升忽略块级作用域
函数声明优先级会高于值声明
参数与函数重名
使用未声明的变量
b 会直接挂载到全局变量上。
函数、形参、var声明重名
可以看到形参直接没有出现,我们可以从预编译的过程中找到答案。
函数声明在最后声明,覆盖了形参。
a1的赋值,覆盖了函数。
总结
函数声明优先级会高于值声明。
变量提升忽略 块级作用域
如果一个值没有声明就使用,不会变量提升。但是当执行时,会直接挂载到全局环境上。
The text was updated successfully, but these errors were encountered: