变量提升与函数提升
程序员文章站
2023-12-21 19:51:52
...
变量提升
在使用var声明对象的时候就算声明在赋值之后依然可以使用,这就是函数提升:
var a = "globalvale";
function fn (){
console.log(a);
var a="functionvar";
}
fn();//"undefine"
在上面的例子当中我们发现按照我们想的执行顺序,应该是打印出的globalvale但是打印出的却是在函数最后申明的a;那是因为变量用var声明时会默认将声明放在当前作用域的最前面:
var a = "globalevale";
function fn (){
var a
console.log(a);
a="functionvar";
}
fn();
实际的运行效果如上。这就是变量提升。
函数提升
类似于变量提升:
test();// i am function
function test(){
console.log("i am function")
}
我在想既然函数提升和变量提升都是一样的效果,那如果我们声明变量将函数赋值给变量是什么效果那。
test();//test is not function
var test = function (){
console.log("i am testFunctio")
}
经过上面两个例子可知,var仅仅是将声明提升了,赋值操作并没有提升。