猿问

ES6中数据的includes的例子无法理解,定义时无设形参,但调用却能传递参数?

相关代码

const contains = (() =>
  Array.prototype.includes
    ? (arr, value) => arr.includes(value)
    : (arr, value) => arr.some(el => el === value)
)();contains(['foo', 'bar'], 'baz'); // => false

这是我在阮一峰ES6的教程看到的一个例子,无法理解调用该函数时,参数是如何传递的?


慕勒3428872
浏览 534回答 1
1回答

MMTTMM

这个代码写得太精炼了,我们来提取一下重点: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。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答