美文网首页
关于作用域的一道面试题

关于作用域的一道面试题

作者: 郑伟的菜园子 | 来源:发表于2016-01-07 03:34 被阅读305次
    var a = 1;
    
    function foo () {
    
        console.log(a);
    
        var a = 2;
    
        console.log(a);
    
    }
    
    foo();
    

    请分别写出第一个 console.log 和第二个 console.log 的输出值。
    Javascript函数 变量的初始化顺序

    预执行期

    1.函数声明被初始化,放置到全局变量(全局上下文环境)window中
    2.var声明的变量被放置到全局变量(全局上下文环境)window、或者var所在的上下文环境如函数内部中,初始值为undefined

    执行期

    当代码执行到时,变量赋值才会发生。非var声明的变量也只在代码执行到后才被创建,然后放置到全局变量(全局上下文环境)window中

    Javascript 上下文环境

    全局上下文环境:Window

    函数上下文环境:在函数内部使用var声明的变量是本地变量,出了函数范围后会被垃圾回收。闭包不会被垃圾回收。

    即var声明的变量,在预执行期都会被放到相应的上下文环境中,然后在执行期,相应上下文环境中的变量会被赋值。

    答案

    undefined 2

    相关文章

      网友评论

          本文标题:关于作用域的一道面试题

          本文链接:https://www.haomeiwen.com/subject/xorfkttx.html