V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Alexisused
V2EX  ›  JavaScript

JS function 作为参数,写法的疑惑

  •  
  •   Alexisused · 2016-09-05 16:16:07 +08:00 · 2490 次点击
    这是一个创建于 2994 天前的主题,其中的信息可能已经有所发展或是发生改变。
    function add(x, y) {
      return x + y;
    }
    
    // 将函数赋值给一个变量
    var operator = add;
    
    // 将函数作为参数和返回值
    function a(op){
      return op;
    }
    a(add)(1, 1)
    

    最后调用时,按正常写法不是应该这样写吗: a(add(1, 1))? 为什么写成 a(add)(1, 1)也是可以得,这种写法怎么理解?

    2 条回复    2016-09-05 17:03:25 +08:00
    palmers
        1
    palmers  
       2016-09-05 16:31:27 +08:00
    一般我调用函数都是 a(arg) ; add 函数由函数 a 返回,那 a(add) 不省略的就是 var fun = a(add) ; 然后 fun(1,1) 所以 才是 a(add)(1,1) ; a(add(1,1)) 这里传递给函数 a 函数就不是函数 add 了 而是 add 操作后的结果值 ,显然不是一个函数类型参数
    Alexisused
        2
    Alexisused  
    OP
       2016-09-05 17:03:25 +08:00
    @palmers 豁然开朗 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2843 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:45 · PVG 22:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.