const vs let when calling require
const
can be normally used when you don't want your program
to assign anything to the variable
"use strict"; const a = 1; a = 2;
will produce
TypeError: Assignment to constant variable.
.to use the variable without explicitly initializing.
"use strict"; const a;
will produce
SyntaxError: Unexpected token ;
Simply put, I would say,
use
const
whenever you want some variables not to be modifieduse
let
if you want the exact opposite ofconst
use
var
, if you want to be compatible with ES5 implementations or if you want module/function level scope.
Use let
only when you need block level scoping, otherwise using let
or var
would not make any difference.
Performance test const
vs let
usage on require
for Node.js 6.10:
require('do-you-even-bench')([
{ name: 'test 1', fn: function() {
const path = require('path');
}
},
{ name: 'test 2', fn: function() {
let path = require('path');
}
}
]);
test 1 .... 2,547,746.72 op/s
test 2 .... 2,570,044.33 op/s
I have the same feeling that you're describing. A big percentage of declared variables in my code tend to be constant, even objects and arrays. You can declare constant objects and arrays and still be able to modify them:
const arr = [];
arr.push(1);
arr;
// [ 1 ]
const obj = {};
obj.a = 1;
obj;
// { a: 1 }
AFAIK ES6 modules do not require variable declarations when importing, and I suspect that io.js will move to ES6 modules in a near future.
I think this is a personal choice. I'd always use const when requiring modules and for module local variables (foo
in your example). For the rest of variables, use const appropriately, but never go mad and use const everywhere. I don't know the performance between let and const so I cannot tell if it's better to use const whenever possible.