javascript - js变量提升

查看:88
本文介绍了javascript - js变量提升的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

ES5中,JavaScript只能通过函数来创建词法作用域(不是动态作用域)

词法作用域就是代码写完,作用域就已经构建好了,如下面的案例一

案例一

var num = 10;
function test(){
    console.log(num);
}

function test1(){
    var num = 100;
    test();
}
    
test1(); // 10

案例二中该怎么解释一定要执行test()才不会报错呢,不是应该像案例一那样在函数执行前就已经进行了变量提升了吗

案例二

console.log(a);

function test() {
     a = 1;
}
test(); // 必须执行才能打印undefined 否则报错 

解决方案

案例二你可以这么理解:
//因提升所以test函数置顶
function test() {
a = 1;
}
//但是此时还没调用test,所以a还没赋值
console.log(a);//err

//接着才执行test(),此时a才赋值,但是该行为为赋值而不是声明;

test();//a为1

这篇关于javascript - js变量提升的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆