繁体   English   中英

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

[英]Why does /* */ comment behave differently ? Javascript bug?

这真的很奇怪。 为什么当fx1,fx2和fx3正确返回“ true”时,fx2返回“未定义”?

<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,除了fx2返回未定义。

在IE11和Chrome 47上测试。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM