我已经玩ES6一段时间了,我注意到虽然声明的变量var按预期提升了......
console.log(typeof name); // undefined
var name = "John";
Run Code Online (Sandbox Code Playgroud)
... 用吊装声明let或const似乎有一些问题的变量:
console.log(typeof name); // ReferenceError
let name = "John";
Run Code Online (Sandbox Code Playgroud)
和
console.log(typeof name); // ReferenceError
const name = "John";
Run Code Online (Sandbox Code Playgroud)
这是否意味着变量声明let或未声明const?这是怎么回事?这个问题let和const这个问题有什么区别吗?
我在我的项目中使用ES6和Babel,当我宣布我的一个时,我收到一个错误 const
'use strict';
const APP = window.APP = window.APP || {};
const _ = window._;
APP.personalCard = (function () {
...
}());
Run Code Online (Sandbox Code Playgroud)
错误
未捕获的TypeError:已声明标识符'APP'
这就是整个文件,我没有在该文件中的任何其他地方声明.但我已经声明var在其他文件的顶部.
你认为它应该是什么?
如果let关键字引入了块范围的正确实现,那么var是否还有一个用例?我从软件设计的角度来看这个,而不是语法,"你能做到"的立场.