zoukankan      html  css  js  c++  java
  • 面试题之JavaScript 代码执行

    小编才疏学浅,若文章、答案有错误之处,欢迎邮件通知小编及时修改,同时也可以面试题投稿。最后祝大家共同进步!

    写出代码执行结果:

    function C1(name){
      if (name) {
        this.name = name;
      }
    }
    function C2(name) {
      this.name = name;
    }
    function C3(name) {
      this.name = name || 'John';
    }
    
    C1.prototype.name = 'Tom';
    C2.prototype.name = 'Tom';
    C3.prototype.name = 'Tom';
    
    console.log((new C1()).name + (new C2()).name + (new C3()).name);
    

    答案:

    TomundefinedJohn
    

    基础题目,无需多言,可以自行打印一下实例化的对象。

    C1 {}__proto__: Object C2 {name: undefined} C3 {name: "John"}
    





    写出代码执行结果:

    window.number = 2;
    
    var obj = {
      'number': 3,
      'db1': (function(){
        this.number *= 4;
        return function(){
          this.number *= 5;
        }
      })()
    };
    
    var db1 = obj.db1;
    db1();
    obj.db1();
    
    console.log(window.number + obj.number);
    

    答案:

    55
    
    window.number = 2;
    
    var obj = {
      'number': 3,
      'db1': (function(){
        this.number *= 4;
        return function(){
          this.number *= 5;
        }
      })()
    };
    
    var db1 = obj.db1;   //window.number = 8 , obj.number = 3 
    db1();     //window.number = 40 , obj.number = 3 
    obj.db1();   //window.number = 40 , obj.number = 15 
    
    console.log(window.number + obj.number);   // 40 + 15
    

    1、var db1 = obj.db1; : 当代码执行到这里,由于obj.db1是一个立即执行的匿名函数,所以这里的this是指向的window,并且执行了window.nuber*4,又把一个匿名函数当做立即执行的匿名函数的返回值赋给了db1
    2、db1(); : 这时db1是上一步返回的匿名函数,此时执行代码,相当于全局执行函数,this还是指向window,所以window.nuber*5
    3、obj.db1(); : 执行到这里,obj.db1已经只是function(){this.number *= 5;}函数体了,自执行函数只会在创建时候执行一次,所以只是obj.number*5
    所以最终结果是: 40 +15






  • 相关阅读:
    ARM装配说明MCR/MRC学习
    smark和openfire即时通信代码
    Bulk Insert具体订单
    Redis测井系统
    几种任务调度的 Java 实现方法与比较
    Android中Style和Theme的使用
    高仿优酷Android客户端图片左右滑动(自动切换)
    Android GridView 一行显示数据(包括图片和文本),解决的办法是计算数据占该行的宽度是多少
    为Android GridView 设置行背景
    Android利用Filter过滤数据
  • 原文地址:https://www.cnblogs.com/jiaoshou/p/13713077.html
Copyright © 2011-2022 走看看