Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两者之间的差异';如果';语句和';如果/否则';环_Javascript_Loops_If Statement - Fatal编程技术网

Javascript 两者之间的差异';如果';语句和';如果/否则';环

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

我在下面列出了一个问题和两个答案。答案背后的逻辑在我看来是相同的,但解决方案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') {
    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;iconsole.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;iconsole.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循环周围缺少花括号会使行为变得误导。在这种情况下,没有区别。不