Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是javascript优化吗?_Javascript - Fatal编程技术网

这是javascript优化吗?

这是javascript优化吗?,javascript,Javascript,这样做快吗 (obj = {})[key] = val; 然后 ? 或者这仅仅是因为一行字更容易阅读 我怀疑这两个代码片段在性能上是否有任何差异。有些人只是喜欢以更简洁的方式编写代码。我个人认为第一个例子非常神秘;即使是作者也可能需要停下来,在六个月后重新阅读代码时弄清楚发生了什么 “有能力的程序员完全意识到自己脑袋的大小有限。因此,他以完全谦逊的态度完成任务,避免像瘟疫这样的聪明把戏。”-Edsger W.Dijkstra我怀疑这两个代码片段在性能上是否有任何差异。有些人只是喜欢以更简洁的方

这样做快吗

(obj = {})[key] = val;
然后

?


或者这仅仅是因为一行字更容易阅读

我怀疑这两个代码片段在性能上是否有任何差异。有些人只是喜欢以更简洁的方式编写代码。我个人认为第一个例子非常神秘;即使是作者也可能需要停下来,在六个月后重新阅读代码时弄清楚发生了什么


“有能力的程序员完全意识到自己脑袋的大小有限。因此,他以完全谦逊的态度完成任务,避免像瘟疫这样的聪明把戏。”-Edsger W.Dijkstra

我怀疑这两个代码片段在性能上是否有任何差异。有些人只是喜欢以更简洁的方式编写代码。我个人认为第一个例子非常神秘;即使是作者也可能需要停下来,在六个月后重新阅读代码时弄清楚发生了什么


“有能力的程序员充分意识到自己脑袋的大小有限。因此,他以完全谦逊的态度完成任务,避免像瘟疫这样的聪明把戏。”-Edsger W.Dijkstra

我认为两个片段之间没有任何区别,第二个片段比第一个更可读。

我认为两个片段之间没有任何区别,第二个片段比第一个更可读。

不,没有真正的区别。对于大多数有经验的程序员来说,这可能是显而易见的,但我做了一个jsperf来证明这一点:

你看不到任何可复制的差异。如果存在差异,那么在任何情况下,它都将非常小,以至于您无法可靠地测量它


使用第一种形式的原因是它的书写时间更短,对于有经验的JavaScript程序员来说,阅读时间也可能更短。在某些情况下,它可能有助于使代码更加简洁或对称。就我个人而言,我并不讨厌第一种形式,但我不推荐它,因为它会使大多数人更难阅读代码。

不,没有真正的区别。对于大多数有经验的程序员来说,这可能是显而易见的,但我做了一个jsperf来证明这一点:

你看不到任何可复制的差异。如果存在差异,那么在任何情况下,它都将非常小,以至于您无法可靠地测量它


使用第一种形式的原因是它的书写时间更短,对于有经验的JavaScript程序员来说,阅读时间也可能更短。在某些情况下,它可能有助于使代码更加简洁或对称。就我个人而言,我并不讨厌第一种形式,但我不推荐它,因为它会使大多数人更难阅读代码。

这两种形式的功能完全相同。单行版本是压缩/缩微器内部应该做的事情,而不是用户显式地做。在我看来,不太容易理解。

这两者做的事情完全相同。单行版本是压缩/缩微器内部应该做的事情,而不是用户显式地做。在我看来,不太可读。

简而言之:没有功能上的差异,也没有评估方式上的差异。评估方法如下:

obj = {}
在内存中创建一个新对象,并将引用存储到名为
obj
的变量中

在该赋值(
(obj={}).
)周围加上括号,以及在第二个示例(
obj…
)中调用实例,都直接引用内存中的同一对象。唯一的区别是第二个代码示例写在新行上

从这里开始,代码完全相同:
[key]=val
,将
key
变量中存储的属性设置为
val
中设置的值

这表明代码的计算结果完全相同,这意味着性能上不会有任何差异


我能想到为什么第一个示例是这样的两个原因,一个是使代码更加紧凑以减少文件大小,另一个原因只是某人的个人喜好。

简言之:没有功能上的差异,也没有计算方式上的差异。评估方法如下:

obj = {}
在内存中创建一个新对象,并将引用存储到名为
obj
的变量中

在该赋值(
(obj={}).
)周围加上括号,以及在第二个示例(
obj…
)中调用实例,都直接引用内存中的同一对象。唯一的区别是第二个代码示例写在新行上

从这里开始,代码完全相同:
[key]=val
,将
key
变量中存储的属性设置为
val
中设置的值

这表明代码的计算结果完全相同,这意味着性能上不会有任何差异


我能想到为什么第一个例子是这样的两个原因,一个是使代码更加紧凑以减少文件大小,另一个原因只是某人的个人喜好。

这真的重要吗?还是让可读性和可维护性更好的代码更易于阅读?我发现恰恰相反,这真的重要吗?还是让可读性和可维护性更好的代码更易于阅读?我发现正好相反。该死,你比我快。我怀疑jsperf在这种微性能测量中是否可靠。@TedHopp这个jsperf似乎测量IE的速度很慢,而我的铬电脑是最快的(只是开玩笑:p)。有趣。我所有的jsperf测试似乎都显示了相同的东西!谢谢,也许有点不相关-有什么页面告诉我Javascript优化吗?该死,你比我快。我怀疑jsperf在这种微观性能测量中是否可靠。@TedHopp这个jsperf似乎测量IE速度慢,我的铬计算机是所有计算机中最快的(只是开玩笑:p)。有趣。