在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。

 
posted on 2016-05-31 09:53  鱼鱼疯  阅读(515)  评论(0编辑  收藏  举报