gpt4 book ai didi

javascript - 两个 'if' 语句和 'if/else' 循环之间的差异

转载 作者:行者123 更新时间:2023-11-28 18:19:57 24 4
gpt4 key购买 nike

我在下面列出了一个问题和两个答案。答案背后的逻辑对我来说似乎是相同的,但解决方案 A 有效,而解决方案 B 返回“false”,除非“x”是字符串的第一个字母。这是为什么?

问题:

编写一个名为 hasX() 的函数。它应该接受一个字符串作为输入,如果字符串包含字符“x”,则返回 true,如果不包含字符,则返回 false。

解决方案A:

function hasX(s) {

for (var i = 0; i < s.length; i++)
if (s[i] === 'x') {
return true;
} if (s[i] !== 'x') {
return false;
}
}

hasX('I play the xylophone');

// returns true

解决方案B:

function hasX(s) {

for (var i = 0; i < s.length; i++)
if (s[i] === 'x') {
return true;
} else {
return false;
}
}

hasX('I play the xylophone');

// returns false

最佳答案

这里的区别在于,在第一个示例中,您有两个 if在第二个语句中,您有一个 if-else陈述。自从你的for循环没有任何大括号,它只包含其后的第一个语句,因此正确嵌套,它们是这样的:

for
if

if


for
if-else

在第一个示例中,第二个 if如果循环完成,将在循环全部完成后执行。在第二个示例中,整个 if-else在循环的每次迭代中执行。

第一个循环迭代,直到找到值为 x 的字符。 or 到达数组末尾,而第二个立即返回,因为第一个字符是 x或者不是。

实际上,您不需要两个条件。您可以像这样正确编写您的函数:

function hasX(s) {

for (var i = 0; i < s.length; i++) {
if (s[i] === 'x') {
return true;
}
}

// didn't find an x
return false;
}

console.log(hasX('I play the xylophone'));

console.log(hasX('I play the piano'));

我建议始终在循环体周围使用大括号和 if声明。它有助于防止像这样的偷偷摸摸的错误。

关于javascript - 两个 'if' 语句和 'if/else' 循环之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40054502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com