Gol*_*den 41 javascript node.js ecmascript-6 io.js
由于io.js现在支持ES6,因此您终于可以使用const和let关键字.显然,let是var一些超级大国的继承者.
但那怎么样const?我知道,当然,"常数"意味着什么,但我想知道何时使用它(关于最佳实践).
例如,如果我创建一个需要另一个模块的模块,我可以写:
'use strict';
const util = require('util');
const foo = function () {
// Do something with util
};
module.exports = foo;
Run Code Online (Sandbox Code Playgroud)
基本上我把它换成的每一次出现var用const.总体来说,我认为这是好的,但如果我遵循这个模式,它给我留下的方式更多的用途const比let,因为大多数变量是不是"变量"在字面意义上.
这是好风格吗?我应该宁愿去let吗?我什么时候应该选择const过let?
the*_*eye 38
const 当你不想要你的程序时,可以正常使用
为变量分配任何东西
"use strict";
const a = 1;
a = 2;
Run Code Online (Sandbox Code Playgroud)
会产生TypeError: Assignment to constant variable..
在没有显式初始化的情况下使用变量.
"use strict";
const a;
Run Code Online (Sandbox Code Playgroud)
会产生 SyntaxError: Unexpected token ;
简单地说,我会说,
使用const时,你想要一些变量不被修改
let如果你想要完全相反的话,请使用const
使用var,如果你想与ES5实现,或者如果你想模块/功能水平范围相适应.
使用let只有当你需要块级别的作用域,以其他方式使用let或var不会作出任何区别.
我有同样的感觉,你在描述.在我的代码中,很大比例的声明变量往往是常量,甚至是对象和数组.您可以声明常量对象和数组,但仍然可以修改它们:
const arr = [];
arr.push(1);
arr;
// [ 1 ]
const obj = {};
obj.a = 1;
obj;
// { a: 1 }
Run Code Online (Sandbox Code Playgroud)
导入时AFAIK ES6模块不需要变量声明,我怀疑io.js将在不久的将来转移到ES6模块.
我认为这是个人选择.在需要模块和模块局部变量时(foo在你的例子中)我总是使用const .对于其余的变量,请适当地使用const,但不要发疯并在任何地方使用const.我不知道let和const之间的性能所以我不知道是否最好尽可能使用const.