Javascript 这些行号相同吗?

Javascript 这些行号相同吗?,javascript,shorthand,Javascript,Shorthand,我想知道这两个脚本是否执行相同的操作: parseInt(num)?num=parseInt(num):num=str.length 及 如果它们不是,我需要知道第二个做什么。是的,它们做了(但是第二个效率稍微高一点,因为它不必运行两次parseInt。是的,它们做了(但是第二个效率稍微高一点,因为它不必运行两次parseInt。是的,它们与后面的相同(短路评估)JS(或其他支持它的语言)简洁而优美: 这两种方法都是捷径: if (parseInt(num)){ num = parseI

我想知道这两个脚本是否执行相同的操作:

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


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

是的,它们做了(但是第二个效率稍微高一点,因为它不必运行两次
parseInt

是的,它们做了(但是第二个效率稍微高一点,因为它不必运行两次
parseInt

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

这两种方法都是捷径:

if (parseInt(num)){
   num = parseInt(num);
}
else {
   num = str.length;
}
良好做法:

  • 不要在变量
    num
    之前添加
    var
    关键字,否则它将进入全局范围
  • 除非另有需要,否则始终为
    parseInt
    指定一个基数,例如
    parseInt(num,10)

读数:


是的,它们与后面的(短路评估)相同,因为它们简洁而漂亮,是JS(或支持它的其他语言):

这两种方法都是捷径:

if (parseInt(num)){
   num = parseInt(num);
}
else {
   num = str.length;
}
良好做法:

  • 不要在变量
    num
    之前添加
    var
    关键字,否则它将进入全局范围
  • 除非另有需要,否则始终为
    parseInt
    指定一个基数,例如
    parseInt(num,10)

读数:


  • 是的,它们是相等的。这也是一样的:

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

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

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

    另一方面,任何人都知道为什么编译器不将第一个变量转换为
    num=parseInt(num)?parseInt(num):str.length
    ?edit:或者转换为第二个变量(因为你们说它是一样的)?它们没有那么先进。简单。还有-为什么它们会这样?@RokKralj“它们为什么会这样?”,他们的工作是在不改变输出的情况下使代码尽可能短,其中一个就像13个字符一样短,很好。然后,答案的第一部分:)考虑所有这样的情况和代码的排列,这真的不是一件简单的事。顺便说一句,任何人都知道编译器为什么不将第一个改为
    num=parseInt(num)?parseInt(num):str.length
    ?编辑:还是第二个(因为你们说是一样的)?他们没有那么先进。简单。还有-他们为什么会这样?@RokKralj“他们为什么会这样?”,他们的工作是在不改变输出的情况下使代码尽可能短,其中一个就像13个字符一样短,很好。然后,答案的第一部分:)考虑所有这些案例和代码的排列,这真的不是一件简单的事情。我没有投反对票,但这不是100%正确的。第一个类似于您发布的第二个示例。第二个是
    num=parseInt(num);如果(!num)num=str.length
    ,只调用一次
    parseInt
    。@copy:我的意思是说OP应该与第二个示例一起使用,这是错误代码的标志。我没有否决,但这不是100%正确。第一个类似于您发布的第二个示例。第二个是
    num=parseInt(num);如果(!num)num=str.length
    ,只调用一次
    parseInt
    。@copy:这就是我的意思,OP应该和第二个示例一起使用,这是错误代码的标志。