只是一个奇怪的问题.我想创建一个可以处理无限"层"的函数?make add(2)(3),add(1)(2)(3)...(10)all works.
有任何想法吗?
你可以轻微抓住.返回值必须是您可以强制转换为数字的函数.这是如何做:
function add (addend) {
'use strict'
const sum = (this || 0) + addend
const chain = add.bind(sum)
for (const prop of Object.getOwnPropertyNames(Number.prototype)) {
chain[prop] = Number.prototype[prop].bind(sum)
}
return chain
}
console.log(add(1))
console.log(add(1)(2))
console.log(add(1)(2)(3))
// convinced yet?
let four = add(4)
console.log(typeof four, four === 4)
// it's a function, not a number, so coerce to a primitive first
four = Number(four)
console.log(typeof four, four === 4)Run Code Online (Sandbox Code Playgroud)
add()是一个包含context(this)和所有Number.prototype属性(包括其Symbol.toPrimitive属性)的函数.在严格模式下,上下文表现得更好,允许您将其定义为原始值,如数字,而不是默认window和强制绑定基元到Objects.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |