提升
a=2; var a; console.log(a)//2
以上相当于
var a; a=2; console.log(a)
console.log(a)//undefined var a=2;
/* 相当于
var a=2;
console.log(a);
a=2 */
foo();//TypeError bar()//ReferenceError var foo=function bar(){ } /* 以上相当于: var foo; foo() bar() foo()=function() */
// 1.函数优先 函数声明和变量声明都会被提升,但是函数首先被提升 /* 相当于 function foo(){ console.log(1) } foo() foo=function(){ console.log(2) } */ // 2.函数声明可覆盖 // 3.在一个普通内部的函数声明会被提升到所在作用域的顶部 foo(); var foo; function foo(){ console.log(1) } foo=function (){ console.log(2) }//1
foo()//TypeError: foo is not a function
var a=true;
if(a){
function foo(){
console.log("a")
}
}else{
function foo(){
console.log("b")
}
}
浙公网安备 33010602011771号