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






  • 相关阅读:
    我爱java系列之---【微服务间的认证—Feign拦截器】
    我爱java系列之---【设置权限的三种解决方案】
    581. Shortest Unsorted Continuous Subarray
    129. Sum Root to Leaf Numbers
    513. Find Bottom Left Tree Value
    515. Find Largest Value in Each Tree Row
    155. Min Stack max stack Maxpop O(1) 操作
    painting house
    Minimum Adjustment Cost
    k Sum
  • 原文地址:https://www.cnblogs.com/jiaoshou/p/13713077.html
Copyright © 2011-2022 走看看