在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。
时间: 2024-10-25 21:39:10