变量提升:当栈内存(作用域)形式,js代码自上而下执行之前,浏览器首先会把所有带VAR/FUNCTION关键词的进行提前的“声明”或者“定义”。这种预先处理机制称为变量提升。
【变量提升阶段】
var a = 10;
var b = a;
b = 20;
console.log(a)
function sum() {
var rotal = null;
for(var i =0;i<arguments.length;i++){
var item = arguments[i];
item = parseFloat(item);
!isNaN(item)?total+item:null;
}
return total;
}
console.log(sum(10,20,'50',ff))
函数提升,只有具名函数才能函数提升。函数提升优先级高于变量提升,且不会被同名变量声明覆盖,但是会被变量赋值后覆盖。而且存在同名函数与同名变量时,优先执行函数
fun1()
fun2()
var fun1 = function(){
console.log(111)
}
fun2 function(){
console.log(222)
}
fun1提升的是变量,值undefined,所以fun1函数不能正确打印出111。而fun2进行了函数提升可以正确输出222.