变量提升
- 变量提升原理
浏览器对js是先编译后执行,在编译过程中,js中的变量声明会被提升到代码段落前面。
函数声明和定义也会被提升。
如下代码:
console.log(num);
count();
var num = 0;
function count(){
console.log(10)
};
编译后顺序变为:
var num;
function count(){
console.log(10)
};
console.log(num);
count();
num=0;
注意
变量num只有声明被提前,赋值并未提前
函数count的声明和定义都被提前
2、变量提升代码分析
showName()
var showName = function() {
console.log(2)
}
function showName() {
console.log(1)
}
执行结果为:
1
原因:
多个函数同名时,后定义的覆盖先定义的
函数和变量同名时,变量不生效