• kangax 的javascript谜题


    第一题

     (function(){ 
          return typeof arguments;
        })();
    //问自动执行函数会返回什么值
    
     
       // 就是考Arguments对象的typeof
       // 看平时用firebug多不多了……
    

    第二题

     var f = function g(){ return 23; };
      typeof g();
    //问最后一行的执行结果
    
     
    //根据标准,命名函数表达式的函数名只对函数体内可见
    //因此报错
    

    第三题

       (function(x){
        delete x;
        return x;
        })(1);
    //问自动执行函数会返回什么值
    
     
    // 参数不可删除
    //1
    

    第四题

      var y = 1, x = y = typeof x;
        x;
    //问最后一行的执行结果
    
     
     //声明两个变量x与y,y最初赋为1,x没有赋值,默认赋给window的一个属性undefined,
     //因此typeof undefined为"undefined",最后x= y= "undefined"
    

    第五题

      (function f(f){
        return typeof f();
        })(function(){ return 1; });
    //问自动执行函数会返回什么值
    
     
        //函数名被优先级更高的参数名覆盖了 --->
        // (function (f){
        //   return typeof f();
        //  })(function(){ return 1; });
        //typeof 1 ---> "number"
    

    第六题

        var foo = { 
          bar: function() { return this.baz; }, 
          baz: 1
        };
        (function(){ 
          return typeof arguments[0]();
        })(foo.bar);
    //问自动执行函数会返回什么值
    
     
        //我们把下面那个自动执行函数分解一下
        //var a = function(){
        //  return typeof arguments[0]();
        //};
        //a(foo.bar)
        //执行完arguments[0](),即得到this.baz
        //由于this变量在此绑定失效,它指向window,window有bax变量吗?
        //没有,返回"undefined"
    

    第七题

        var foo = {
          bar: function(){ return this.baz; },
          baz: 1
        }
        typeof (f = foo.bar)();
    //问最后一行的执行结果
    
     
        //我们把最后一行分解一下
        //window.f
        //f= foo.bar
        // f()
        // typeof f()
        //返回"undefined"
    

    第八题

       var f = (function f(){ return "1"; }, function g(){ return 2; })();
        typeof f;
    //问最后一行的执行结果
    
     
          //首先要理解分组选择符,最后a会赋给什么呢?
          // var a = (1,2,3);
          // alert(a) ---> 3
          //那么这就简单了,f = function(){return 2};
          //typeof f() ---> number
    

    第九题

         var x = 1;
          if (function f(){}) {
            x += typeof f;
          }
          x;//问x的值
    
     
      //函数声明只能裸露于全局作用域下或位于函数体中。
          //从句法上讲,它们不能出现在块中,例如不能出现在
          // if、while 或 for 语句中。因为块只能包含语句,
          //因此if()中的f函数不能当做函数声明,当成表达式使用
          //可能在预编译阶段做了如下处理
          //if((XXX = function(){}))
          //因此我们是找不到f的
          // 1undefined
    

    第十题

         var x = [typeof x, typeof y][1];
         typeof typeof x;
    //问最后一行的执行结果
    
     
       //数组其实就是这个样子["undefined","undefined"]
       //"string"
    

    第十一题

       (function(foo){
          return typeof foo.bar;
        })({ foo: { bar: 1 } });
    //问自动执行函数会返回什么值
    
     
       //分解一下
       // var bb = { foo: { bar: 1 } }
       //  (function(j){
       //    return typeof j.bar
       // })(bb)
       // "undefined"
       //注意那个对象只有foo属性,没有bar属性
    

    第十二题

        (function f(){
          function f(){ return 1; }
          return f();
          function f(){ return 2; }
        })();
    //问自动执行函数会返回什么值
    
     
    //函数声明会在预编译阶段被提前
    //2
    

    第十三题

     function f(){ return f; }
      new f() instanceof f;//问这一行的值
    
     
          //由于函数f会返回自身,这个new 就形同虚设
          //如果f的形式为 function f(){return this}或function f(){}就不一样
          //false
    

    第十四题

     with (function(x, undefined){}) length;
    //问length的值为多少
    
     
      //with就是一个读写器,题意是取出函数的length属性
      //而函数的length就是指它形参的长度  
       //2
    

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

    第十五题

    var a = (function () {
        var A = null;
        function A() {}
        return A;
    })();
    //问自动执行函数会返回什么值
    
     
    //由于函数声明比var变量的优先级高
    //函数内部在预编译后,是这个样子
    //var A
    //functionA(){};
    //A= null
    //return A
    //null
    

    第十六题

    (function (A) {
        var A = A;
        function A() {}
        return A;
    })(null);
    //问自动执行函数会返回什么值
    
      //function A() {}
    

    第十七题

    var a = (function () {
        return A;
        if (true) {
            function A($true) {}
        } else {
            function A($false) {}
        }
    })();
    
      //FF报错,IE返回unction A($false) {}
    
  • 相关阅读:
    如何快速理解复杂业务,系统思考问题?
    巧用API网关构建大型应用体系架构
    当我们谈论不可变基础设施时,我们在谈论什么
    浅谈 Node.js 热更新
    阿里云云原生一体化数仓 — 数据建模新能力解读
    一个开发者自述:我是如何设计针对冷热读写场景的 RocketMQ 存储系统
    谈谈讲清楚这件事的重要性
    全链路压测:影子库与影子表之争
    问题排查不再愁,Nacos 上线推送轨迹功能
    【20220112】缺乏自信的恐惧(一)
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1667565.html
Copyright © 2020-2023  润新知