From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/string/includes/index.html | 111 +++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/global_objects/string/includes/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/string/includes/index.html') diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/includes/index.html b/files/zh-cn/web/javascript/reference/global_objects/string/includes/index.html new file mode 100644 index 0000000000..83ced4b38a --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/string/includes/index.html @@ -0,0 +1,111 @@ +--- +title: String.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/String/includes +tags: + - JavaScript + - Method + - Monkey patching + - Prototype + - String + - String.prototype.includes() +translation_of: Web/JavaScript/Reference/Global_Objects/String/includes +--- +
{{JSRef}}
+ +

includes() 方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。

+ +

语法

+ +
str.includes(searchString[, position])
+ +

参数

+ +
+
searchString
+
要在此字符串中搜索的字符串。
+
position {{optional_inline}}
+
从当前字符串的哪个索引位置开始搜寻子字符串,默认值为 0
+
+

返回值

+
+
如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false
+
+ +

描述

+ +

这个方法可以帮你判断一个字符串是否包含另外一个字符串。

+ +

区分大小写

+ +

includes() 方法是区分大小写的。例如,下面的表达式会返回 false

+ +
'Blue Whale'.includes('blue'); // returns false
+ +

兼容补丁

+ +

这个方法已经被加入到 ECMAScript 6 标准中,但未必在所有的 JavaScript 实现中都可以使用。然而,你可以轻松地 polyfill 这个方法:

+ +
if (!String.prototype.includes) {
+  String.prototype.includes = function(search, start) {
+    'use strict';
+    if (typeof start !== 'number') {
+      start = 0;
+    }
+
+    if (start + search.length > this.length) {
+      return false;
+    } else {
+      return this.indexOf(search, start) !== -1;
+    }
+  };
+}
+ +

示例

+ +

使用 includes()

+ +
var str = 'To be, or not to be, that is the question.';
+
+console.log(str.includes('To be'));       // true
+console.log(str.includes('question'));    // true
+console.log(str.includes('nonexistent')); // false
+console.log(str.includes('To be', 1));    // false
+console.log(str.includes('TO BE'));       // false
+ +

规范

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.includes', 'String.prototype.includes')}}
+ +

浏览器兼容性

+ +

{{Compat("javascript.builtins.String.includes")}}

+ +

String.prototype.contains()

+ +

在 Firefox 18 - 39中,这个方法的名称叫 contains()。由于下面的理由,在{{bug(1102219)}}中,它被重命名为 includes() :

+ +

据报道,在Firefox 17上,一些使用 MooTools 1.2的网站会崩溃掉。这个版本的MooTools会检查函数 String.prototype.contains()  是否存在,如果不存在的话,MooTools就添加它自己的函数。通过在Firefox 17中引入这个函数,检查更改的行为在一定程度上导致了基于MooTools的 String.prototype.contains() 函数的代码实现中断。结果是,当 MooTools的拓展 导致 MooTools 1.2.6 版本的发布,此实现在Firefox 17中不可用和 String.prototype.contains() 在随后一个版本Firefox 18上是可用的。

+ +

MooTools 1.3会强制使用它自己版本的函数 String.prototype.contains(),因此,依赖它的网站不会崩溃掉。然而,你应该注意此方法在 MooTools 1.3 签名和ECMAScript 6 签名中的不同(在第二个参数)。后来,为了与ES6标准一致在MooTools 1.5版本及以上更改了签名

+ +

相关链接

+ + -- cgit v1.2.3-54-g00ecf