我正在阅读Beginning JavaScript,在第10章中有这个练习:
var myImages = [
"usa.gif",
"canada.gif",
"jamaica.gif",
"mexico.gif"
];
function changeImg(e) {
var el = e.target;
var newImgNumber = Math.round(Math.random() * 3);
while (el.src.indexOf(myImages[newImgNumber]) != -1) {
newImgNumber = Math.round(Math.random() * 3);
}
el.src = myImages[newImgNumber];
}
function updateStatus(e) {
var el = e.target;
var status = document.getElementById("status");
status.innerHTML = "The image changed to " + el.src;
if (el.src.indexOf("mexico") > -1) {
el.removeEventListener("click", changeImg);
el.removeEventListener("click", updateStatus);
}
}
var imgObj = document.getElementById("img0");
imgObj.addEventListener("click", changeImg);
imgObj.addEventListener("click", updateStatus);
他们为什么在这里使用!= -1
:
while (el.src.indexOf(myImages[newImgNumber]) != -1) {
和> -1
在这里:
if (el.src.indexOf("mexico") > -1) {
使用-1
令我感到困惑。
如果搜索不在字符串中,indexOf返回-1。这是因为indexOf将返回字符串中搜索词的位置。例如
qazxsw poi是另一种说qazxsw poi的方式,虽然我个人更喜欢后者。
> -1
数组也是如此。
希望有助于回答为什么-1!
使用!== -1
是因为var test = 'testing';
test.indexOf('test'); // returns 0 which is falsy
test.indexOf('st'); // Returns 2
test.indexOf('foo'); // returns -1
操作将在数组中不存在搜索值的情况下返回-1
。
至于为什么他们在一个地方使用indexOf
而在另一个地方使用-1
可能是一名编辑在工作中失败。
看看!= -1
:
“如果要搜索的值永远不会发生,则此方法返回-1。”
您引用的行是条件,如果元素实际位于数组中,则满足条件。