You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS中in运算符与includes方法的作用及区别是什么

两个表达式的执行逻辑

1. 'a' in ['a', 'b']

  • in 是JavaScript的原生运算符,核心作用是 判断指定的属性名是否存在于目标对象或其原型链上。
  • 数组在JS中本质是特殊的对象,它的可枚举自有属性是数字字符串格式的索引(比如上述数组的属性名是'0'、'1'),还有自带的length属性,以及原型链上的push、includes等方法属性。
  • 该语句判断的是字符串'a'是否是数组的属性名,显然不是,因此返回false。如果改成0 in ['a', 'b']就会返回true,因为0会被转为字符串'0',是数组的合法索引属性。

2. ['a','b'].includes('a')

  • includes是Array.prototype上挂载的实例方法,核心作用是 判断数组的元素列表中是否包含指定的参数值。
  • 内部会使用SameValueZero规则做等值比较,对NaN的识别友好:[NaN].includes(NaN)会返回true,这点和===判断逻辑不同。
  • 该语句判断的是数组存储的元素值里有没有'a',显然存在,因此返回true。
二者核心区别
  • 作用目标完全不同:in针对的是对象的 属性名(键),includes针对的是数组的 元素值。
  • 适用场景不同:in可以用来判断数组是否有某个索引、是否包含某个原型/自有属性;includes仅用来判断数组存储的元素值是否匹配目标。
  • 容易混淆的示例参考:
    const arr = [2, 3]
    console.log(2 in arr) // 输出false,因为数组的索引只有0和1,不存在属性名2
    console.log(arr.includes(2)) // 输出true,因为数组的元素值包含2
    

内容的提问来源于stack exchange,提问作者yuvalm2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:06:04