学 js 的过程里经常会看一些样本,比如 node 库文件,比如 express、koa 脚手架生成的项目,会发现页头上都是用 var 或者 const 来定义引入的变量,几乎没有用 let 的,跟我想的不一样啊!用 var 还能理解,为什么要用 const 呢?明显比 let 多敲两下键盘,难道和 let 有区别?我就一菜鸟,谁给说说?!
学 js 的过程里经常会看一些样本,比如 node 库文件,比如 express、koa 脚手架生成的项目,会发现页头上都是用 var 或者 const 来定义引入的变量,几乎没有用 let 的,跟我想的不一样啊!用 var 还能理解,为什么要用 const 呢?明显比 let 多敲两下键盘,难道和 let 有区别?我就一菜鸟,谁给说说?!
这个属于历史遗留问题。
直到现在,在 nodejs/npm 源码里面依然存在这大量的 var
,也有很多的开发者们提了大量的 issues 和 PRs 试图移除这些历史遗留代码,但毫无例外的都被 nodejs 的维护者关闭了,理由就是:“目前这些代码运行的非常好,而且目前低版本 nodejs 的下载量也非常高。如果直接替换到 let
/const
面临的风险比较大,然而没有明显的证据表明 let
一定比 var
性能高”。而维护者的态度是:“新添加的功能使用 es6+ 语法,当修改了原功能时,可以将此功能使用 es6 语法重构”。
let,const的暂时性死区,使得在当前作用域,在变量声明之前访问变量,是无法访问到的,没有变量提升,能减少代码中的隐藏bug。按照对应的特性来说,习惯对于块作用域内的变量使用let,常量使用const。
对于页头来说,使用let,const,var作用域上可能没有大的区别,commonjs规范中每个模块都是一个独立的作用域。
使用var的原因可能是希望当前这个变量做出类型上的改变,而又想在低版本环境能顺利运行...
maybe...只要不出bug,用啥都行
https://blog.techbridge.cc/20...[從 V8 bytecode 探討 let 與 var 的效能問題]
13 回答12.6k 阅读
7 回答1.7k 阅读
3 回答1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1k 阅读✓ 已解决
从ES6的角度来说的话,有些值不需要更改的变量应该用
const
声明,而不是let
,因为后者会报 eslint 的警告。