变量声明应该在作用域的顶端,但是赋值没有。
function example(){ var declaredButAssigned; //如下输出 declaredButNotAssigned 未定义 console.log(declaredButNotAssigned) declaredButNotAssigned = true }
匿名表达式能提升他们的变量名,但不能提升函数赋值。
function example(){ console.log(anonymous); //未定义 anonymous();//类型错误 var anonymous = function(){ console.log('anonymous function expression'); } }
命名函数表达式会提升变量名,而不是函数名或者函数体。
function example(){ console.log(AAA);// undefined AAA();//TypeError AAA is not a function BBB();//ReferenceError BBB is not define var AAA = function BBB(){console.log('Hi~~')}; }
//当变量名同函数名称一样 function example2(){ console.log(AAA);// undefined AAA();//TypeError var AAA = function named(){console.log('Hello');}; }
函数声明会提升变量名和函数体
function example(){ AAA(); function AAA(){ console.log('Hi~~'); } }
时间: 2024-11-09 02:53:34