zoukankan      html  css  js  c++  java
  • 前端面试题部分总结

    var test = (function(a){
          this.a = a;return function(b){
             return this.a + b;
          }
        }
        (function(a,b){
          return a;
        }(1,2))
        
    );
    console.log(test(4)); 

    昨天面试遇到这个题,当时答错了,回来运行了一遍是5,又仔细看了看,原来如此,现分析如下,

    (funtion(a,b){

         return a;

    }(1,2))这段代码 是1 

    因而 test可以简写为 var test=(function(a){

      this.a=a;

    return function(b){

      return this.a+b;

    }

    }(1))

    1带入test中 所以 this.a 是1 然后 console.log中test(4)带入4,b就为4.所以运行结果为5;

    (function(){
    
        var a=b=3;
    })();
    
    console.log(typeof a === 'undefined'); 
    console.log(typeof b === 'undefined'); 

    var a = b = 3; 实际上是:

    b = 3;
    var a = b;
    因此,b最终成为一个全局变量(由于它不在var关键字之前),并且仍然在范围内,甚至在封闭函数之外。

    a未定义的原因是a是自动执行匿名函数的局部变量

    所以第一个console.log是true,第二个是false;

  • 相关阅读:
    第一个gulp程序
    r.js打包
    吃饭途中的回忆
    IE下script标签的readyState属性
    CSS 选择器
    html的base标签
    迷你MVVM框架 avalonjs 1.3.9发布
    2014年的年终总结
    Visual Studio2017 数据库架构比较
    MVC开发中自定义返回类型
  • 原文地址:https://www.cnblogs.com/jolee/p/7209938.html
Copyright © 2011-2022 走看看