Javascript 两者之间的差异';如果';语句和';如果/否则';环
我在下面列出了一个问题和两个答案。答案背后的逻辑在我看来是相同的,但解决方案A有效,而解决方案B返回“false”,除非“x”是字符串的第一个字母。为什么呢 问题: 编写一个名为hasX()的函数。它应该接受一个字符串作为输入,如果字符串包含字符“x”,它应该返回true,如果不包含字符“x”,则返回false 解决方案A:Javascript 两者之间的差异';如果';语句和';如果/否则';环,javascript,loops,if-statement,Javascript,Loops,If Statement,我在下面列出了一个问题和两个答案。答案背后的逻辑在我看来是相同的,但解决方案A有效,而解决方案B返回“false”,除非“x”是字符串的第一个字母。为什么呢 问题: 编写一个名为hasX()的函数。它应该接受一个字符串作为输入,如果字符串包含字符“x”,它应该返回true,如果不包含字符“x”,则返回false 解决方案A: function hasX(s) { for (var i = 0; i < s.length; i++) if (s[i] === 'x') { retu
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
函数hasX(s){
对于(变量i=0;i
解决方案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
函数hasX(s){
对于(变量i=0;i
这里的区别在于,在第一个示例中,您有两个if
语句,而在第二个示例中,您有一个if-else
语句。由于您的for
循环没有任何大括号,因此它只包含它后面的第一条语句,因此正确嵌套,它们如下所示:
for
if
if
for
if-else
在第一个示例中,第二个if
将在循环完成后执行,如果循环完成。在第二个示例中,整个if-else
在循环的每次迭代中执行
第一个循环迭代,直到找到一个值为x
的字符或到达数组末尾,而第二个循环立即返回,因为第一个字符不是x
实际上,您不需要两个条件。您可以这样正确编写函数:
for
if
if
for
if-else
函数hasX(s){
对于(变量i=0;i console.log(hasX(“我弹钢琴”)
这里的区别在于,在第一个示例中,您有两个if
语句,而在第二个示例中,您有一个if-else
语句。由于您的for
循环没有任何大括号,因此它只包含它后面的第一条语句,因此正确嵌套,它们如下所示:
for
if
if
for
if-else
在第一个示例中,第二个if
将在循环完成后执行,如果循环完成。在第二个示例中,整个if-else
在循环的每次迭代中执行
第一个循环迭代,直到找到一个值为x
的字符或到达数组末尾,而第二个循环立即返回,因为第一个字符不是x
实际上,您不需要两个条件。您可以这样正确编写函数:
for
if
if
for
if-else
函数hasX(s){
对于(变量i=0;i console.log(hasX(“我弹钢琴”)代码>如果其他选项:
start;
if() \\true
break;
end;
start;
if() \\true
if()
end;
IF=FALSE-转到ELSE-IF。如果是真的,那就分手吧
IF-IF:
start;
if() \\true
break;
end;
start;
if() \\true
if()
end;
执行两个IF。如果其他IF:
start;
if() \\true
break;
end;
start;
if() \\true
if()
end;
IF=FALSE-转到ELSE-IF。如果是真的,那就分手吧
IF-IF:
start;
if() \\true
break;
end;
start;
if() \\true
if()
end;
执行2个IF's.这与效率和您的需求有关。If语句是独立执行的。每个人都会跑。Else if语句仅在前一个if失败时执行。:) 这与效率和你的需求有关。If语句是独立执行的。每个人都会跑。Else if语句仅在前一个if失败时执行。:) 这两个函数都将返回false
,因为它们分别测试第一个字符并返回
仅当字符为=='x'时,才返回true
。如果不是,你还不想回来。您需要允许循环继续并检查下一个字符
只有在检查了所有字符和循环结束后,您才知道字符串没有“x”,因此只有在检查完之后,您才应该返回false。这两个函数都将返回false
,因为它们都测试第一个字符并返回
仅当字符为=='x'时,才返回true
。如果不是,你还不想回来。您需要允许循环继续并检查下一个字符
只有在检查了所有字符和循环结束后,您才知道字符串没有“x”,因此只有在检查完之后,您才应该返回false。在您的情况下,两个“if”或“if/else”语句在逻辑上没有区别。
此示例将告诉您一般的区别:
例1:
function name{
if(condition 1){ //Task1; }
if(condition 2){ //Task2; }
}
在本例中,如果这两个条件都为true,则代码将在两个循环中运行,除非循环返回一个值(这将阻止进一步的代码执行)
例2:
function name{
if(condition1){ //Task1; } //loop1
else{ //Task 2; } //loop2
}
在本例中,代码将运行loop1(如果“condition1”为true)或Loop2(否则),因此您的代码只运行其中一个循环。在您的情况下,两个“if”或“if/else”语句在逻辑上没有区别。
此示例将告诉您一般的区别:
例1:
function name{
if(condition 1){ //Task1; }
if(condition 2){ //Task2; }
}
在本例中,如果这两个条件都为true,则代码将在两个循环中运行,除非循环返回一个值(这将阻止进一步的代码执行)
例2:
function name{
if(condition1){ //Task1; } //loop1
else{ //Task 2; } //loop2
}
在本例中,代码将运行loop1(如果“condition1”为true)或Loop2(否则),因此您的代码将只运行其中一个循环。在这种情况下没有区别。甚至不包括cpu周期数。因此,在上面我将使用解决方案B,因为更清楚的是,它是一个if-els。for循环周围缺少花括号会使行为变得误导。在这种情况下,没有区别。不