function foo(){ console.log(b); // undefined b(); //TypeError: b is not a function var a = true; if(a){ function b(){ console.log(2) } //下面这段代码和上面的结果一样 // var b = function(){ // console.log(2) // } } //b() --> 这里会被执行 } foo()
从上面看上去,b是undefined,证明这个变量还是有的,只不过它并不是一个函数,这情况和用函数表达式差不多。
总结
提升分为函数声明提升和变量声明提升
声明变量用var,声明函数用function
变量提升会将变量提升到自己所在作用域的顶部
函数表达式不存在提升的机制。
函数声明和变量声明同时声明同一个标识符时,函数声明优先
多个函数声明同一个标识符时,最后一个声明覆盖先前的声明
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。
您可能感兴趣的文章: