javascript basic concept (js最基础的一些概念) - archering/basic GitHub Wiki
ES6(ecma-262 的第六次变更,所有以前按照惯例称为es6) == ECMAScript2015
JavaScript的官方新版本将按照ECMAScript+年份的形式发布
const 常量是块级作用域;此声明创建一个常量,其作用域可以是全局或本地声明的块。 与var变量不同,全局常量不会变为窗口对象window(最顶层对象global)的属性。声明后必须立即初始化,初始化后不能修改。
let 声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是,它声明的变量只能是全局或者整个函数块的; 和var 不同,像if-else ,function, switch 这样的块都可以阻断let声明变量的延续,let并不会像var一样在全局对象上创造一个属性。不会声明前置。
function varTest() { var x = 1; if (true) { var x = 2; // 同样的变量! console.log(x); // 2 } console.log(x); // 2 } function letTest() { let x = 1; if (true) { let x = 2; // 不同的变量 console.log(x); // 2 } console.log(x); // 1
var 函数作用域,会声明前置,会给全局对象window创建属性。
块状作用域的可视化理解 :块语句(或其他语言的复合语句)用于组合零个或多个语句。该块由一对__大括号__界定,可以是labelled:
let x = 1; { let x = 2; } console.log(x); // 输出 1