# 基本使用

判断字符串中是否包含另外一个字符串。

"JavaScript".includes("Java"); // true
"JavaScript".includes("java"); // false

"Java".includes("JavaScript"); // false

# 深入研究

如果参数不是字符串呢?

"123".includes(123); // true

"[object Object]".includes({}); // true

"".includes([]); // true

"true".includes(true); // true

"null".includes(null); // true

"NaN".includes(NaN); // true

"undefined".includes(); // true

相信你看了上面的几个例子,会和我一样做出一个大胆猜测: includes 方法内部会首先对参数进行字符串转化的操作,因为

将参数转化为字符串,实际上是调用了构造函数 String() 方法:

String({});
// "[object Object]"

String([]);
// ""

String(true);
// "true"

String(333);
// "333"

String(null);
// "null"

String(NaN);
// "NaN"

String(undefined);
// "undefined"

# 题外话

其实一开始我第一反应不是 String() 方法,而是 toString 方法,每种变量类型都拥有 toString 方法,但是有两个例外:undefinednull

null.toString()
// Uncaught TypeError: Cannot read property 'toString' of null

// undefined.toString()
// Uncaught TypeError: Cannot read property 'toString' of undefined
上次更新: 8/9/2021, 11:31:12 AM