为了账号安全,请及时绑定邮箱和手机立即绑定

求解js 的问题 为什么结果是5? 分析一下

求解js 的问题 为什么结果是5? 分析一下

呼唤远方 2018-11-22 18:14:42
<!doctype html><html><head><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><meta charset="UTF-8"/><title>Document</title></head><body>        <script>     var test=(function(a){          this.a=a;          return function(b){           return this.a+b;          }     }(function(a,b){          return a;          debugger;     }(1,2)));      console.log(test(4))     //结果是输出5 求解?    </script></body></html>
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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

查看完整回答
反对 回复 2018-12-30
  • 1 回答
  • 0 关注
  • 674 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号