【问题标题】:Difference between String.prototype.includes/contains in ES6? What about .has?ES6 中 String.prototype.includes/contains 的区别? .has 呢?
【发布时间】:2015-10-10 04:11:14
【问题描述】:

我想知道这些方法中的哪一种会成为标准。从我所看到的情况来看,这两种方法都会产生相似的结果,但我不确定为什么会有两个版本/别名。它们之间有区别吗?另外,为什么 ES6 可以使用 .contains.includes 在一个名称下服务于多种用途时使用 .has

我知道.has 不用于字符串。

我的测试支持:

        | Contains      Includes
Chrome  | No            Yes
Firefox | Yes           Yes
NodeJS  | Yes           No

【问题讨论】:

  • 检查 MDN 中的 this 部分。另外,您使用的是哪个版本的 Node.js?
  • Node v0.12.0 带有--harmony 标志和"use strict"。从这个页面来看,firefox 似乎要删除 contains,而 NodeJS 将成为一个喜欢与众不同的笨蛋。不过……如果.has 换个名字就好了。
  • Node.js 与此无关。它只是使用 v8 来支持 JavaScript 语言。由于 Node v0.12.0 使用的是非常旧的 v8 版本(3.28.73),我建议您更新。

标签: javascript node.js string ecmascript-6


【解决方案1】:

Array.prototype.includes 返回一个布尔值。

Array.prototype.indexOf 返回一个数字。

Array.prototype.contains 不是原生 JS。

【讨论】:

    【解决方案2】:

    听起来他们想避开一些兼容性问题。我不确定这些是什么,但我猜当时 Firefox 和 NodeJS 的实现已经足够不同,以至于他们需要避免它们。

    https://github.com/tc39/proposal-Array.prototype.includes/commit/4b6b9534582cb7991daea3980c26a34af0e76c6c

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2022-11-25
      • 1970-01-01
      • 2015-07-31
      • 2017-04-21
      相关资源
      最近更新 更多