这些行代码是否相同?

时间:2012-02-17 18:09:27

标签: javascript shorthand

我想知道这两个脚本是否做同样的事情:

parseInt(num)?num=parseInt(num):num=str.length

num=parseInt(num)||str.length;

如果他们不是,我需要知道第二个做什么。

3 个答案:

答案 0 :(得分:2)

是的,他们这样做(但第二个效率更高,因为它不必运行parseInt两次)。

答案 1 :(得分:2)

是的,它们与后来的(短路评估)相同,是简洁的JS(或其他支持它的语言):

num = parseInt(num) || str.length;

反过来又是对此的简要说明:

if (parseInt(num)){
   num = parseInt(num);
}
else {
   num = str.length;
}

良好做法:

  • 不要在var变量之前忘记num关键字,否则会进入全局范围。
  • 除非另有需要,否则请始终为parseInt指定基座,例如parseInt(num, 10)

<强>读数:

答案 2 :(得分:1)

是的,他们是平等的。这也是一样的:

num = parseInt(num)?parseInt(num):str.length