黑马程序员技术交流社区

标题: 【面试系列】局部变量和全局变量 [打印本页]

作者: 爱编码的J    时间: 2021-1-22 11:33
标题: 【面试系列】局部变量和全局变量
情况1:
[JavaScript] 纯文本查看 复制代码
var a = 20;     //在函数外声明并赋值,第一个a是全局变量
    function fn() {
        var a = 10; //在函数内部使用var声明并赋值,第二个a是局部变量
        console.log(a); //优先调用在函数内部的局部变量a的值10
    }
    fn();   //10
    console.log(a); //因为没有提升问题,直接输出全局变量a的值20
    //结果是 10  20

情况2:
[JavaScript] 纯文本查看 复制代码
var a = 20;     //在函数外声明并赋值,第一个a是全局变量
    function fn() {
        a = 10; //在函数内部没有使用var声明,那么在外面找到var关键词,然后在fn()函数内做赋值操作,第二个a是全局变量
        console.log(a); //优先调用在函数内部的局部变量a,但是在函数内没有找到局部的,那么直接去函数外找全局的a,10
    }
    fn();   //10
    console.log(a); //因为没有提升问题,直接输出全局变量a的值10
    //结果是 10  10

情况3:
[JavaScript] 纯文本查看 复制代码
var a = 20;     //在函数外声明并赋值,第一个a是全局变量
    function fn() {
        console.log(a); //优先调用在函数内部的局部变量a,但是在函数内只有a的声明,在调用前无复制,所以是undefined
        var a = 10; //在函数内部没有使用var声明,那么在外面找到var关键词,然后在fn()函数内做赋值操作,第二个a是全局变量
    }
    fn();   
    console.log(a); //因为没有提升问题,直接输出全局变量a的值2









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2