示例:
var img = $('img');
var div = $('div');
var arr = ['1', '2', '3'];
console.log(arr.findIndex(x => x === img.length ? img.prop('id') : div.prop('id')));
console.log(arr.findIndex(x => x === (img.length ? img.prop('id') : div.prop('id'))));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="2"></div>
&#13;
输出:
0
1
第一种情况:
x === img.length ? img.prop('id') : div.prop('id')
如果它将x
与img.length
进行了比较。我不明白为什么它会返回0
?
img.prop('id')
返回undefined
,div.prop('id')
返回2
,为什么会记录0
?
第二种情况:
x === (img.length ? img.prop('id') : div.prop('id'))
在与x
比较之前,它获得了div标签的ID。没关系。
请指正。谢谢!
答案 0 :(得分:2)
x
将始终是代码中的字符串,img.length
将是一个数字,因此它们永远不会严格相等(===
)。
因此它被评估为:
(x === img.length) ? img.prop('id') : div.prop('id')
(false ) ? img.prop('id') : div.prop('id')
div.prop('id')
2
findIndex
等待真值,div.prop('id')
为2
,这是真实的。它在第一个索引上返回它,这就是它返回0的原因。