zoukankan      html  css  js  c++  java
  • 一个JS的面试题及其解析

    var tt='aa';
    function test() {
    alert(tt);
    var tt = 'dd';
    alert(tt);
    test2();
    }
    function test2() {
    alert(tt);
    }
    test();

    执行test()的输出结果是 undefined dd aa 

    第二个dd不难理解,但是第一个和第三个输出结果就要思考一番了。看了下资料,这其实和JS的解析器有关。调用对象初始化时,JS解析器会在相应的代码段里寻找var声明的变量,
    然后在全局对象。所以当代码执行到alert(tt)时,解析器会先到test()内部找,找到了var tt这个局部变量,调用对象中创建相应的属性,此时它是未赋值的(undefined),当程序执行到var tt='dd'时,声明代码段才会给相应对象的属性赋值所以第二个输出是dd,当执行到test2内部,由于未改变过全局变量tt的值,在这里也没有定义局部变量tt,所以输出的是aa。

  • 相关阅读:
    jquery ajax
    js 列表选择
    Jquery 搜索框自动提示
    图片居中跟inline-block
    模式学习(一)
    高效图形(一)
    eval() / Function()
    css3(一)
    回调函数(二)
    回调函数(一)
  • 原文地址:https://www.cnblogs.com/linjzong/p/2718332.html
Copyright © 2011-2022 走看看