Is there an efficiency difference between const vs var while 'requiring' a module in NodeJS
我正在阅读https://github.com/rvagg/bl的文档,我注意到在示例中,它们使用const来要求一个模块,这让我怀疑:这是一个好的实践吗?我是说,对我来说,这看起来是个好主意。
上面链接的一个直接示例是:
1 2 3 4 5 6
| const BufferList = require('bl')
var bl = new BufferList()
bl.append(new Buffer('abcd'))
bl.append(new Buffer('efg'))
/*...*/ |
我还注意到示例中缺少分号,但在其他地方已经彻底讨论过了。
- 没什么问题。我想它也会稍微提高性能
- @MarkasOftware这是我第一次注意到有人在使用它,这很有道理,我的意思是,我不认为这是错误的,但可能背后有一个原因,为什么不传播。
- @雨果之所以没有传播,是因为const最近才在ES6标准中正式化。虽然有些浏览器和服务器端JS实现早在ES6标准之前就提供了const,但语义不同(在某些浏览器中,您仍然可以将新值重新分配给常量变量)。
- @在我所知道的大多数情况下,markasoftware const实际上会降低性能。jspef.com/const-vs-var公司
- @Dodekeract哇,情节扭曲!我想知道为什么
在这里,const非常有意义:
- 它记录了
对象引用不会更改。
- 它具有阻塞范围(与let相同),这也是有意义的。
除此之外,这取决于个人偏好(使用var、let或const)
- 注意,const可能会导致更差的性能。
- 如果将hello数组设为var,那么const部分的性能将提高1%。我认为这可能是因为world()将元素推送到hello数组中,因此const需要分配以前应该是静态的新内存。
- @乔恩:我认为这不会有什么不同。因为,contobj使用的指针在内存(引用)中不能更改,但引用的对象或内存指针指向的对象可能会更改。(与您的示例中的array/non-primitive数据类型case相同)
- @当我在chrome中运行性能测试时,const实际上比var快。它肯定在过去的三年左右发生了变化。