<!DOCTYPE HTML>
<html>
<body>
<p>Before the script...</p>
<script>
alert([[25,4]].includes([25,4]));
</script>
<p>...After the script.</p>
</body>
</html>
当我运行上面的代码时,它输出“ false”,这是不正确的。如果将[[25,4]]。includes([25,4])更改为['a']。includes('a'),则会输出正确的答案“ true”。为什么这样做呢?
答案 0 :(得分:1)
这是因为 WorksID GWZone LabResultsID pH WorksID ph_range avg_pH
--- --------- -------- -------------- ---- --------- ---------------- --------
1 1 Zone1 1 7 1 >=6.5 and <8.5 7
2 2 Zone2 2 7 2 >=6.5 and <8.5 7.5
3 4 Zone3 4 7 4 >=6.5 and <8.5 7.5
4 3 Zone2 3 8 3 >=6.5 and <8.5 7.5
5 5 Zone3 5 8 5 >=6.5 and <8.5 7.5
6 6 Zone3 6 9 6 >=8.5 9.5
7 7 Zone3 7 10 7 >=8.5 9.5
作为两个操作数引用了2个不同的数组对象。 JavaScript不认为2个不同的对象相等。 [25,4] !== [25,4]
返回['a'].includes('a')
,因为true
是一个字符串(原始值)。如果将'a'
转换为'a'
对象,则String
方法应返回.includes
。 (选中What is the difference between JavaScript object and primitive types?)
false
如果将代码更改为以下内容,则'a' === 'a' // true
new String('a') === new String('a') // false
[new String('a')].includes(new String('a')) // false
方法应返回.includes
:
true