zoukankan      html  css  js  c++  java
  • 今天看到的xx的一道百度前端笔试题

    以下是原文:

    JS的this真是好难理解啊,求高手指点

    百度的前端面试题,代码如下:

    var a=5;
    function test(){
        a=0;
        alert(a);
        alert(this.a);
        var a;
        alert(a);
    }
    test();
    new test();

    在Chrome上run了一下,结果是

    0
    5
    0
    0
    undefined
    0

    前三个结果好说,但对于第五个结果undefined我很疑惑,关键的就是这一句:

    alert(this.a);

    我的理解是,当运行到new test()这一句的时候,this指向了test,那么this.a应该就是

    a=0;

    这一句里面的0啊!为什么是undefined呢?求解答啊求解答!

    ------------------------------------------------------------------------------------------------------------------------------------------

    其实this还好理解,new test()时,里边的this指向的就是 new test()这个对象,

    这样看吧var t=new test();那么test里边的this就指向t了,当alert(this.a)时,因为t本身没有a这个属性当然就是undefined啦,而博主把函数里边的局部变量理解成了它的属性,所以就想不通啦。局部变量和属性成员还是有本质区别的。

    其实这里我想说的是test里边的一句var a  使得这段代码的运行结果大相径庭,在test函数里边先使用了a这个变量,然后再定义它的,var a让a变成了函数里边的一个局部变量,原来在函数里边的变量还可以先使用再定义!!!不过这种方式的用法还是不推荐吧,直接var a=0;干嘛弄得这么别扭呢

  • 相关阅读:
    网络故障排除工具 | 快速定位网络故障
    Brocade博科光纤交换机zone配置
    博科Brocade 300光纤交换机配置zone教程
    游戏开发
    第8章 图
    第7章 二叉树
    第6章 树型结构
    第5章 递归
    第4章 字符串、数组和特殊矩阵
    第3章 顺序表的链式存储
  • 原文地址:https://www.cnblogs.com/hust/p/2041877.html
Copyright © 2011-2022 走看看