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)
读数:
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应该和第二个示例一起使用,这是错误代码的标志。