记得之前看 MDN 文档,上面写在 es6 之前要给函数默认参数的写法是:
var add = function (x, y) {
x = (typeof b !== 'undefined') ? x : 1
return x + y
}
在 node 下给 var add = function (x = 1, y) blabla 做 currying ,报错了。。。怎么会呢?
百思不得骑姐,用 babel 试试吧,结果竟然是:
var add = function add() {
var x = arguments.length <= 0 || arguments[0] === undefined ? 'oo' : arguments[0];
var y = arguments[1];
return x + y;
};
难怪不能 currying 。大呼 MDN 误我!赶紧去翻 MDN ,准备发贴开喷!!!
OMG , MDN 文档才发现写的居然是“一种常用的策略”:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters
好吧,我认栽了!但是转念一想, es6 和 bebel 的默认参数写法为啥不直接用 typeof 的思路呢?这样就不能做 currying 了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.