脚本宝典收集整理的这篇文章主要介绍了es6特性介绍(中),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
声明变量 let
-
块状作用域
{
VAR a = '123';
}
{
let b = '456'
}
// 如果在浏览器环境执行的时候
console.LOG(a);// '123'
console.log(b);// b is not defined
-
不会往全局变量上面绑定,防止全局变量的污染
var a = '123';
let b = '456';
// 直接结果
console.log(window.a);// '123'
console.log(window.b);// undefined;
-
相同作用域中不允许重复声明相同变量
let a = '123';
let a = '456';
// 执行结果
console.log(a);// 抛出语法错误:SyntaxError: Identifier 'me' has already been declared
-
经典的例子
for(var i=1;i<10;i++){
}
console.log(i); // 输出10,一不小心就污染了全局环境
// 使用let,就不会有这个问题
for(let j=1;j<10;j++){
}
console.log(j); // 抛出引用异常:ReferenceError: j is not defined
声明常量 const
在es6
之前并没有很好的办法进行常量的声明,常量:这是一个只读的变量,es6
中给出了const
这个特性,专门用来处理这类问题
const a = '123';
a = '456'; // 抛出异常 SyntaxError: "a" is read-only
需要注意下,常量的对象,其中的属性是可以被改变的
const obj = {
name:'hello'
}
obj.name = 'hello 2'; // 这个地方是合法的
for...of
这es6
提供的一个新的迭代器,功能类似for...in
,只是前者返回的是value,而后者返回的是脚标
let data = ['a','b','c'];
for(let i in data){
console.log(i);// 输出 0,1,2
}
for(let j of data){
console.log(j);// 输出 a,b,c
}
代理 PRoxies
这是es6
提供的一个强大的特性,可以通过非侵入的方式,修改对象的默认行为
var obj = {
name:'dog'
};
var handler = {
get:function(target,key){
return target[key].replace('dog','cat');
}
};
// 设置代理
var Proxy = new Proxy(obj,handler);
console.log(proxy.name);
可以进行代理的属性还有很多:
var handler = {
get:...,
set:...,
has:...,
deleteProperty:...,
apply:...,
construct:...,
getOwnPropertyDescriptor:...,
defineProperty:...,
getPrototypeOf:...,
setPrototypeOf:...,
enumerate:...,
ownKeys:...,
preventextensions:...,
isExtensible:...
}
以上是脚本宝典为你收集整理的es6特性介绍(中)全部内容,希望文章能够帮你解决es6特性介绍(中)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。