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

为什么/**/comment的行为会有所不同?Javascript错误?,javascript,comments,Javascript,Comments,这真的很奇怪。为什么fx2返回“未定义”,而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 f

这真的很奇怪。为什么fx2返回“未定义”,而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>

功能fx1(项目){
返回(项目a==1)
&&(项目b==1);
}
功能fx2(项目){
return/*(item.a==1)
&&*/(b项=1);
}
功能fx3(项目){
返回true/(item.a=1)
&&(项目b==1);
}
功能fx4(项目){
退货(b项=1);
}
警报(fx1({a:1,b:1}));
警报(fx2({a:1,b:1}));
警报(fx3({a:1,b:1}));
警报(fx4({a:1,b:1}));
在网上试一试

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

在IE11和Chrome 47上测试

有人能说服我这不是Javascript中的bug吗

function fx2(item) {
    return /*(item.a == 1)
        && */(item.b == 1);
  }
javascript将自动放置一个
返回之后
。将所有返回语句放在同一行。像

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

真不敢相信你居然没看这个:)谢谢!虽然,我不知道我是否喜欢称之为语言功能。。。这绝对不是我在谷歌搜索的目的;)酷!嘿,非常感谢,这似乎是一个合理的解释。仍然是一个Javascript语法/解析器错误,/*和*/应该可以跨越多行,不是吗?他应该意识到这一点,并注意返回线尚未结束…@codetuner不幸的是,这是js的“功能”