我是靠谱客的博主 慈祥秋天,这篇文章主要介绍变量提升和函数提升哪个优先问题解释:肯定是函数声明优先,但最后的结果要看谁最后赋值参考文章:函数声明 和 var声明的优先级,现在分享给大家,希望可以做个参考。
问题
首先:普遍认为函数声明提升优于变量提升
但为什么下面的结果是这样的呢(第一个输出我们好理解,因为是先编译后赋值,编译的时候先声明了var 和 function,之后再进行赋值)预编译看这篇
它们都会进行预解析,函数声明提前于变量声明,但是最终会被变量覆盖!
复制代码
1
2
3
4
5
6
7
8console.log(typeof a); // function var a = 1; function a(){} console.log(typeof a); // number
解释:肯定是函数声明优先,但最后的结果要看谁最后赋值
函数声明先赋值,变量声明执行到赋值语句才赋值
因为两种声明方式共同操作一块栈空间,所以,主要看是谁最后赋值的,我们再看一个例子:
复制代码
1
2
3
4
5
6
7
8console.log(typeof a); // function var a = 1; function a(){} console.log(typeof a); // number
这就看的出来了,通过上边的这个demo, 明显可以看出来,应该 函数声明先赋值的,它是在执行上下文的执行阶段一开始的时候就已经进行了赋值操作,所以 最开始 typeof a 可以得到 function;而,变量声明 是要执行到赋值语句的时候才进行的赋值,所以 最后 typeof a 得到是 number;
参考文章:函数声明 和 var声明的优先级
最后
以上就是慈祥秋天最近收集整理的关于变量提升和函数提升哪个优先问题解释:肯定是函数声明优先,但最后的结果要看谁最后赋值参考文章:函数声明 和 var声明的优先级的全部内容,更多相关变量提升和函数提升哪个优先问题解释:肯定是函数声明优先,但最后的结果要看谁最后赋值参考文章:函数声明内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复