相关代码const contains = (() =>
Array.prototype.includes
? (arr, value) => arr.includes(value)
: (arr, value) => arr.some(el => el === value)
)();contains(['foo', 'bar'], 'baz'); // => false这是我在阮一峰ES6的教程看到的一个例子,无法理解调用该函数时,参数是如何传递的?
1 回答

MMTTMM
TA贡献1869条经验 获得超4个赞
这个代码写得太精炼了,我们来提取一下重点:
const something = Array.prototype.includes ? (arr, value) => arr.includes(value) : (arr, value) => arr.some(el => el === value)const contains = (() => something)(); contains(['foo', 'bar'], 'baz'); // => false
于是问题来了:
something
的类型是什么?contains
等号后面是个什么?
答案:
something
的类型是个函数,由那个三元表达式计算得出。contains
等号后面的是一个立即执行函数表达式 (IIFE),这个表达式的计算结果是something
。
添加回答
举报
0/150
提交
取消