【发布时间】:2020-08-28 18:33:07
【问题描述】:
我在这里的第一个问题: 我正在从 developer.mozzila.org 学习循环,这是 'break;' 的一个例子 用户提供姓名,此代码搜索数组联系人并返回号码。
const contacts = ['Chris:2232322', 'Sarah:3453456', 'Bill:7654322', 'Mary:9998769', 'Dianne:9384975'];
const para = document.querySelector('p');
const input = document.querySelector('input');
const btn = document.querySelector('button');
btn.addEventListener('click', function() {
let searchName = input.value.toLowerCase();
input.value = '';
input.focus();
for (let i = 0; i < contacts.length; i++) {
let splitContact = contacts[i].split(':');
if (splitContact[0].toLowerCase() === searchName) {
para.textContent = splitContact[0] + '\'s number is ' + splitContact[1] + '.';
break;
} else {
para.textContent = 'Contact not found.';
}
}
});
我不明白这段代码如何没有返回“未找到联系人”。在每次迭代中。相反,根据 MDN,只有在数组中找不到名称时才会这样做。难道'else'下的代码每次不满足'if'条件时都会执行吗?
如果我错过了一些 StackOverflow 礼仪,我们深表歉意。
【问题讨论】:
-
它正在做你认为的,认为它不是“返回”那个值。该函数从不返回任何内容。它确实如此,但是一旦找到联系人时更新文本,它就会退出循环。
-
@Pointy 我实际上没有包含负责在名称不匹配时显示“未找到联系人”的 HTML 代码。你可以在这里尝试运行它:mdn.github.io/learning-area/javascript/building-blocks/loops/…
-
更新 HTML 与“返回”某些东西不同。
-
@Pointy 啊我的坏
-
这段代码让人想起许多初学者在搜索某些东西时常犯的错误,我在this question 中对此进行了描述。但它有一个显着的区别,特定于错误消息在 DOM 中的显示方式。它仍然是一种令人困惑的编写方式。
标签: javascript loops for-loop if-statement break