您的位置:首页 > Web前端 > JavaScript

Javascript es6 块级作用域

2017-02-04 00:00 10 查看
在javascript es6中,提到了一个新的概念,叫块级作用域,块级作用域就是用大括号包起来的来的代码块。

let,const是块级元素,var是局部作用域(局部作用域是function函数里可见),let和const的区别见如下代码段

function varTest() {
var x = 1;
if (true) {
var x = 2;  // same variable!
console.log(x);  // 2
}
console.log(x);  // 2
}

function letTest() {
let x = 1;
if (true) {
let x = 2;  // different variable
console.log(x);  // 2
}
console.log(x);  // 1
}

const与let的区别在于const是它是不变的,而let是可变的。

但是对于const只是对于基本数据类型的值或者是引用数据类型的引用对象是不可变的,而引用对象里面的属性依然是可变的,如果想要引用对象里面的属性值都不可见怎么办呢?可以使用Object.freeze(),使用方法如下:

const wes = Object.freeze(person);

在全局作用域中,var会自动创建为一个全局对象(window)的属性,而let不会,相关代码如下

var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined

let不允许重定义,不允许先使用,后定义,相关代码如下

let foo;
let foo; // SyntaxError thrown.

console.log(foo); // ReferenceError
let foo = 2;


想快速了解更多的Javascript es6新特性,请点击如下链接:http://es6-features.org/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息