Open guoshuai93 opened 6 years ago
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
各大浏览器对 ES6 的支持情况可以在这里查看:kangax.github.io/compat-table/es6/
实际生产如果选择用 ES6 中的新特性进行开发,但担心浏览器可能不支持,可以上线前在本地编译成 ES5 的代码,了解 babel。
{ let a = 6; } console.log(a); // ReferenceError: a is not defined
var 命令在代码编译初期,会提升变量到最上方,并赋值为 undefined。而 let 命令不存在提升变量的作用。所以使用 let 声明的变量必须先声明再使用
var
undefined
let
// var 的情况 console.log(foo); // 输出 undefined var foo = 2; // let 的情况 console.log(bar); // 报错 ReferenceError let bar = 2;
let 不允许在相同作用域内,重复声明同一个变量。
function func() { let a = 10; let a = 1; // 报错 } function func(arg) { let arg; // 报错 }
用来声明一个只读的常量,一旦设置就不能再次改变。
const Max_length = 10; Max_length = 13; // TypeError: Assignment to constant variable.
同时意味着最开始设置一个常量的时候,必须给予赋值,否则同样会报错。
const Max_length;// SyntaxError: Missing initializer in const declaration
还有一些特性类似于 let:只在所在作用域内有效,声明的常量不会被提升(只能先声明后使用),不可重复声明。
let 和 const
ES6 历史
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
各大浏览器对 ES6 的支持情况可以在这里查看:kangax.github.io/compat-table/es6/
实际生产如果选择用 ES6 中的新特性进行开发,但担心浏览器可能不支持,可以上线前在本地编译成 ES5 的代码,了解 babel。
let
var
命令在代码编译初期,会提升变量到最上方,并赋值为undefined
。而let
命令不存在提升变量的作用。所以使用let
声明的变量必须先声明再使用let
不允许在相同作用域内,重复声明同一个变量。const
用来声明一个只读的常量,一旦设置就不能再次改变。
同时意味着最开始设置一个常量的时候,必须给予赋值,否则同样会报错。
还有一些特性类似于
let
:只在所在作用域内有效,声明的常量不会被提升(只能先声明后使用),不可重复声明。