随着ES6的关注度的增高,今天有必要介绍下ES6中用let、const来定义变量。
总说:
const 关键字用在那些永远不会改变的变量申明, let 用在其他变量申明上。
(1)var 和let
var,在离它最近的父函数内创建了一个变量的作用域 。
let, 在它最近的块级中创建作用于,这些块包括 for 循环, if 语句以及其他块。
用实例来说话:
实例-1
function fn ( ) {
console . log ( x ) ;
console . log ( y ) ;
var x = 1 ;
if ( x === 1 ) {
let y = 2 ;
}
console . log ( y ) ;
}
fn ( ) ;
console . log ( x ) ;
例中,创建了一个 fn 函数,并且调用它。最后一个 console.log()语句会产生一
个 ReferenceError ,因为 x只在 fn() 中定义(作用域)。因为变量提升,第一个
console.log()将被正常执行。在这个示例中, x 是 undefined 。第二和第三个
console.log(y) 都将出错,因为 let 比 var 的作用于更加严格。 y 变量 只存在于 if 块里面,
不在任何其他地方。俗称“ 临时死亡区 “。
实例-2:
function fn ( x ) {
let y ;
if ( x == 1 ) {
y = 2 ;
}
console . log ( y ) ;
}
fn (1) ;
console . log ( y ) ;
在实例-2中,y有比实例-1更大范围的作用域。由两个实例的对比,在ES6中 let 应该完全取
代 var 。
(2)const
在ES6中, const 代表一个值的 常量索引 (大多数语言都提供这样的功能),即:变量名字在
内存中的指针不能够改变,但是指向这个变量的值 可能改变。并不是一个常量。
(3)说明
新的 let 和 const 关键字在ES5中是不生效的,并且在绝大多数可执行环境中也不生效。
但是,通过类似 Babel 优秀的编译器, 我们可以将我们写的ES6 JavaScript代码编译为可在浏
览器环境中执行的ES5代码。