一行 indexOf 方法中组合的变量 (Eloquent Javascript)

Variables combined in one line of indexOf method (Eloquent Javascript)

我对 Eloquent Javascript

中的以下函数感到困惑
function hasEvent(event, entry) {
  return entry.events.indexOf(event) != -1;
}

entry.events.indexOf(event)是什么意思?

entry 是一个带有 events 属性 的对象(可能是一个数组)。 events 有方法 indexOf。然后检查 eventevents 中的索引,并与 -1.

进行比较

这不是组合变量,只是访问对象属性。

evententry是变量,eventsentry变量引用的对象的属性。

Javascript 中的数组和字符串提供了一种 indexOf 方法,该方法搜索引用的数组或字符串以获取值和 returns 其索引。

例如:

"one two three".indexOf("two"); // 4

[21, 15, 99].indexOf(99); // 2

indexOf() 是数组的标准方法。引用 Mozilla:

The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.

因此 hasEvent() 函数只是检查 event 的值是否存在于 entry.events 数组中。

N.B。 indexOf() 也是 JavaScript 字符串对象的标准方法。再次引用 Mozilla:

The indexOf() method returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex [an optional second parameter]. Returns -1 if the value is not found.

如果 typeof entry.events === 'string' returns 为真,则 hasEvent() 函数将检查 event 的值是否存在于 entry.events 字符串中的任何位置。