为什么/ * * / comment的行为不同? Javascript错误?

时间:2015-12-11 15:20:28

标签: javascript comments

这真的很奇怪。为什么fx2返回'undefined'而fx1,fx2和fx3正确返回'true'?

<script>

  function fx1(item) {
    return (item.a == 1)
        && (item.b == 1);
  }

  function fx2(item) {
    return /*(item.a == 1)
        && */(item.b == 1);
  }

  function fx3(item) {
    return true//(item.a= 1)
        && (item.b == 1);
  }

  function fx4(item) {
    return (item.b == 1);
  }

  alert(fx1({a: 1, b: 1}));
  alert(fx2({a: 1, b: 1}));
  alert(fx3({a: 1, b: 1}));
  alert(fx4({a: 1, b: 1}));

</script>

http://www.codetuning.net/temp/commentedwherejsbug.html

上在线试用

这当然是我原始代码的简化版本,只是为了重现这个问题。最初我有fx1,然后我认为可能不需要第一个条件(测试item.a),我在fx2中评论它。为什么这不起作用? fx3和fx4按预期工作,它们都返回true,除了返回undefined的fx2。

在IE11和Chrome 47上测试。

有人能说服我这不是Javascript中的错误吗?

1 个答案:

答案 0 :(得分:2)

function fx2(item) {
    return /*(item.a == 1)
        && */(item.b == 1);
  }

javascript会在;之后自动放置return。将所有返回语句放在同一行。喜欢

 return (item.a == 1) && (item.b == 1);