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

关于作用域的一道面试题

作者: 郑伟的菜园子 | 来源:发表于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

相关文章

  • 变量提升理解

    一道常见面试题,涉及变量作用域问题var name="Bob";(function(){if(typeof nam...

  • js面试题

    一道腾讯js面试题 题目如下: 对作用域链(scope chain)、执行环境(execution context...

  • 关于作用域的一道面试题

    请分别写出第一个 console.log 和第二个 console.log 的输出值。Javascript函数 变...

  • 从作用域->立即执行函数->变量提升->闭包

    面试题 首先,让我们来看一题面试题; 作用域 作用域(scope)指的是变量存在的范围。Javascript只有两...

  • 无标题文章

    JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...

  • 一道关于JS作用域的面试题

    函数在被直接调用的时候,其中的this指针永远指向window 匿名函数 this总是指向window对象 谁执行...

  • 一道面试题引发的讨论

    本文的示例代码参考scope 目录 面试题 作用域变量提升 块作用域重新绑定 函数作用域立即执行函数表达式 挑战题...

  • 2018-01-07 关于javascript闭包和作用域的理解

    关于 javascript 闭包的一些思考 作用域 词法作用域 函数作用域 块作用域 闭包 什么是作用域? 作用域...

  • 「JS」变量作用域

    作用域介绍静态作用域动态作用域 JavaScript 变量作用域词法环境组成创建结构关于词法环境的问题with 语...

  • js笔记

    1. 关于循环 for( A ) { B };for循环的A和B是两个不同的作用域,B作用域是A作用域的子域,如下...

网友评论

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

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