【发布时间】:2021-09-30 20:31:45
【问题描述】:
给定以下代码:
const letters = ['a', 'b', 'c'];
foo = ((list, letter) => {
if (list.includes(letter)) {
return true;
}
return false;
})(letters, 'c') ? 'letter in list' : 'letter not in list';
console.log(foo);
输出将是:
letter in list
在这个例子中三元运算符是如何工作的?它是否以letters 和c 作为参数调用foo?它怎么知道调用这个函数?
【问题讨论】:
-
(letters, 'c')实际上是函数调用。结果比三元比较使用。 -
IIFE 的结果将返回一个布尔值,三元将打开。
-
这是一个立即调用的函数表达式 (IIFE)。
-
"是否以字母和c为参数调用foo?" 不,它以
letters和c为参数调用定义为(list, letter)的函数。这是[一个 IIFE](What is the (function() { } )() construct in JavaScript?) -
@NiettheDarkAbsol 我同意这是糟糕的代码。但是,它可能只是为了展示 IIFE 而不会使其变得非常复杂。不过,它是相当迟钝。
标签: javascript conditional-operator