随着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中是不生效的,并且在绝大多数可执行环境中也不生效。
但是,通过类似 优秀的编译器, 我们可以将我们写的ES6 JavaScript代码编译为可在浏
览器环境中执行的ES5代码。