对于循环,当预期> 1时,这将返回1

时间:2016-08-14 16:09:27

标签: javascript if-statement

以下是我的代码:

Var x=JSON.parse(Expression) .

运行此代码返回1并且我不明白为什么确切,即使我把“y”||“o”||“u”它返回1而不是3

非常感谢任何帮助

5 个答案:

答案 0 :(得分:2)

在这种情况下你应该采用计数器变量或count。另外,要检查特定字母,您应使用if (s[i] == "r" || s[i] == "a" || s[i] == "w")

function onlyYou(s) {
  s = s.split("");
  var count = 0;
  for (var i = 0; i < s.length; i++) {
    if (s[i] == "r" || s[i] == "a" || s[i] == "w") {
      count = count + 1;
    };
  };
  alert(count);
};

onlyYou("you");

答案 1 :(得分:2)

1-你总是得到'1'因为你在循环中初始化count变量所以每次它再次得到值'0'。

function onlyYou(s){
s = s.split("");
for (var i = 0; i < s.length; i++){
var count = 0;
if (s[i] = "r"||"a"||"w"){
  count = count + 1;
};
};
alert(count);
};

onlyYou("you");

2-如果您的参数为count=3并将其与"you"进行比较,为什么期望获得"raw"

y不等于r

o不等于a

u不等于w

3-您的if语句错误,而不是检查它实际为s变量赋值的值并更改它。

像这样改变你的状况:

function onlyYou(s){
s = s.split("");
for (var i = 0; i < s.length; i++){
var count = 0;
if (s[i] == "r"||s[i] == "a"|| s[i] == "w"){
  count = count + 1;
};
};
alert(count);
};

答案 2 :(得分:2)

for循环的每次迭代中,变量count设置为等于0,然后评估if语句,因此count只能相等无论输入如何,都可以01

您应该在for循环之外声明count,如下所示:

function onlyYou(s){
  s = s.split("");
  var count = 0;
  for (var i = 0; i < s.length; i++){
    if (s[i] = "r"||"a"||"w"){
      count = count + 1;
    };
  };
  alert(count);
};

onlyYou("you");

此外,您的条件if (s[i] = "r"||"a"||"w")不正确。首先,单个=表示作业而不是评估,您应该使用==,因为这会比较两个参数,s[i] = "r"只是将变量s[i]设置为具有值"r"。另外,|| "a"相当于|| true,因为您没有将"a"与任何内容进行比较。

条件应该是:

if (s[i] == "r" || s[i] == "a" || s[i] == "w")

答案 3 :(得分:0)

这段代码有些不妥之处:

1)您的env: node: No such file or directory 声明似乎已关闭。它正在做的是每次都设置TreeMap。我非常怀疑这是预期的行为 2)循环内部有一个计数器,每次迭代都会重置 3)您传入测试的字符串似乎不会触发if条件(假设您要检查集合{r,a,w}是否包含s[i] = "r") - {{1}会导致计数为0.
4)if阻止或s[i]阻止后不要使用分号 5)更多的挑剔 - 没有理由在这里拆分字符串。

"you"

答案 4 :(得分:0)

if条件总是评估为True。这是因为你写了=而不是==