当你看到var a=2 时,
JavaScript将其看作两个声明,
var a; 定义声明在编译阶段进行
a=2 ; 赋值声明会被留在原地等待执行阶段
只有声明本身会被提升,而赋值或其他运行逻辑会被留在原地。如果提升改变了代码执行的顺序,会造成非常严重的破坏。
函数声明和变量声明都会被提升。但是 函数会先被提升,然后才是变量。


微妙的差异,赋值并没有被提升。
声明 foo 变量 并初始化 foo = undefined
foo 的赋值在 foo() 执行后 相当于 undefined()
() 必须是要 函数, undefined不是函数 所以报上面的错
反正提升这一块 ,盯着声明看就行,别的都不会被提升上去,
然后函数声明最优先,
随着版本更替,有些写法也会被禁用。
所以,
不要在同一个作用域里进行重复定义
所有的声明(变量和函数)对会被“移动”到各自作用域的最顶端,这个过程被称为提升
声明本身会被提升,而包括函数表达式的赋值在内的赋值操作并不会提升
要注意避免重复声明,特别是当普通的var声明和函数声明混在一起的时候,否则会引起很多危险的问题!
本文深入解析JavaScript中的提升机制,解释了变量和函数声明如何在编译阶段被移动到作用域的顶部,而赋值操作则保留在原地。强调了函数声明优先于变量声明提升,以及重复声明可能带来的问题。
3479

被折叠的 条评论
为什么被折叠?



