在JS中,因为浏览器的解析式自上而下的,所以经常会涉及到函数或者function的作用域问题,这里简单的说明已ixa
一 函数的作用域提升
举例 :
function f2(){
console.log(i)
};
f2();
var i=10;
此时的结果为undefinded,因为函数作用域的提升,此时的可以写成下面的方式
var i;
function f2(){
console.log(i)
};
f2();
i=10;
函数在调用之前,仅仅是声明了 i,但并未给i 赋值,所以会导致 结果为undefinded。
所以总结,如果函数在调用之前未赋值,则结果为undefinded,如果在赋值之后,则结果为赋值结果,在代码中为了避免这种情况,通常将赋值放在前,调用放在之后。
比较有趣的例子
var i=10;
function i(){
console.log("嘿嘿");
}
console.log(i); //结果为10
这里的结果为10 是因为该函数能写成下列的方式
var i;
function i(){
console.log("嘿嘿");
}
i=10;
console.log(i);
所以只有i的赋值没有提升,结果为10。
如果console.log(i());
则结果为不是一个function。