javascript - 求解js 的問題 為什麼結果是5? 分析一下
扔个三星炸死你
扔个三星炸死你 2017-07-07 10:34:36
0
3
1065
雷雷
扔个三星炸死你
扔个三星炸死你

全部回覆(3)
女神的闺蜜爱上我

let functionA = function (a) {
    this.a = a
    return function (b) {
        return this.a + b
    }
}

let argA = function (a, b) {
    return a
    debugger
}(1, 2)
// 实际上 argA 就等于 1,** 这个地方的 b 没有被用到 **

則原式簡化成:

let test = functionA(argA)

此句執行完後 test 實為

function (b) {
    return this.a + b
}
// ** 这是一个带一个参数的函数,执行 test(4) 时 b 就是 4 **

且此時 this.a 等於 1。因此 test(4) 結果為 5

黄舟

很明顯是5啊

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

分解

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

這要再看不懂,你就要好好學習下基礎了

typecho

首先我們要理解test這個變量,test其實就是一個函數,如下

var test = function(b){
    return this.a + b;
}

外面那層部分是一個立即執行的函數,首先,

function(a,b){
      return a;
 }(1,2)

這部分的結果就是 1,也就是說,程式碼可以簡化為:

var test=(function(a){
      this.a=a;
      return function(b){
          return this.a+b;
      }
 }(1)); 

在上面的程式碼裡面,a=1,因此,在test(4)中,我們得到的是:

var test=(function(a){ // a = 1
      this.a=a;
      return function(b){ // b = 4
          return this.a+b; // 得到 1 + 4
      }
 }(1)); 
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板