Ecma Script 6入门

1,关于let和var的区别,请先看下面的实例

var a = [];
for(var i = 0 ; i < 10 ; i++){
    a[i] = function (){
        console.log(i);
    };
}
a[6]();//10

上面的代码,变量i是var生命的,在全局内都有效,所以每循环一次,新的i值都会覆盖旧值,导致最后执行方法时,输出的都是最后一轮的i值。

var a = [];
for (let i = 0 ; i < 10 ; i++){
    a[i] = function (){
        console.log(i);
    };
}
a[6]();//6

上面的代码中,i是let声明的,当前的i只在本轮循环中有效,所以每次循环的i都是一个新的变量,而且只在for循环代码块中有效,所以最后输出6.

2,let和const申明的变量不存在变量提升,同一个作用域内不允许重复声明。

3,我们经常在函数中,按照下面的方式取值,其实是一种变量的解构赋值用法

//假定全局中有一个对象persion
persion: {
    name: 'name',
    age: 19,
    sex: female
}

function xx(persion){
    let {name,age} = person;
    //以下是其他代码
}

4,定义一个检查元素的方法

const contains = (()=>
    Array.prototype.includes ? (arr,value) => arr.includes(value) : (arr,value) => arr.some(el => el === value)
)();

contains(['foo','bar'],'foo');// true

5,ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这

个对象添加新的方法( mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每
个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入 Symbol 的原因。
ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前
六种是: Undefined Null 、布尔值( Boolean )、字符串( String )、数值( Number )、对象
Object )。
Symbol 值通过 Symbol 函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,
另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性
名产生冲突。
let s = Symbol();

typeof s; // "symbol"
上面代码中,变量 就是一个独一无二的值。 运算符的结果,表明变量 Symbol 数据类型,而不是
字符串之类的其他类型。
Symbol 函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为
字符串时,比较容易区分。
let s1 = Symbol('name');
let s2 = Symbol('age');

s1.toString(); // "Symbol(name)"
s2.toString(); // "Symbol(age)";

上面代码中,s1s2 是两个Symbol值。如果不加参数,它们在控制台的输出都是Symbol() ,不利于区分。

有了参数以后,就等于为它们加上了描述,输出的时候就能够分清,到底是哪一个值。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无物勿吾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值