****声明提前(hoist):
在程序执行前,
将var声明的变量和function声明的函数
集中到*当前作用域*的开始位置创建
赋值留在原地
强调:只有声明方式定义的函数才能被提前!
直接量方式创建的函数,不能提前
<script>
var a=10;
function f1(){
console.log(a);
/**var**/a=20;
console.log(a);
}
f1();//undefined
console.log(a);//
//声明提前好的案例,画图更容易
function fn(){
console.log(1);
}
fn();//2
function fn(){
console.log(2);
}
fn();//2
var fn=100;
fn();//100
//采用函数直接量的方式:
function fn(){
console.log(2);
}
fn();//2
var fn=function (){
console.log(1);
}
fn();//2
var fn=100;
fn();//100
在程序执行前,
将var声明的变量和function声明的函数
集中到*当前作用域*的开始位置创建
赋值留在原地
强调:只有声明方式定义的函数才能被提前!
直接量方式创建的函数,不能提前
<script>
var a=10;
function f1(){
console.log(a);
/**var**/a=20;
console.log(a);
}
f1();//undefined
console.log(a);//
//声明提前好的案例,画图更容易
function fn(){
console.log(1);
}
fn();//2
function fn(){
console.log(2);
}
fn();//2
var fn=100;
fn();//100
//采用函数直接量的方式:
function fn(){
console.log(2);
}
fn();//2
var fn=function (){
console.log(1);
}
fn();//2
var fn=100;
fn();//100
</script>
eg2:
<script>
//采用函数直接量的方式:
var fn=function (){
console.log(1);
}
fn();//1
function fn(){
console.log(2);
}
fn();//1
var fn=100;
fn();//
</script>