ES6 — 箭头函数和Symbol类型的简单用法

ES6 — 箭头函数和Symbol类型

1.箭头函数
ES6 中的箭头函数,(=>) 让代码看起来更加的简洁。

var f = v => v;
// 等同于
var f = function(v){
 return v;
};

上面是一个极简的写法,但这种写法有一定的约束,当箭头函数代码块不止一句的时候,就要换成常规的写法了:

var sum = (num1,num2) => { return num1 + num2; }

当代码块部分多余一条语句的时候,需要用大括号括起来,返回值也需要用到 return 语句。
但大括号往往会被解释为代码块,所以箭头函数直接返回一个对象的时候需要在外层包裹一层括号,否则会报错:

var getTempItem =id => ({ id : id  , name: "Temp" });

箭头函数使用注意事项:

  1. 箭头函数没有自己的 this 对象,在箭头函数中所使用的 this 对象,是定义箭头函数时所在的对象,我的理解是,箭头函数借用了外面一层的 this 对象。
  2. 箭头函数不能作为构造函数,不能使用 new 命令。
  3. 不能使用 arguments 对象,但是可以用 rest 参数代替,而且使用起来更加方便。
  4. 箭头函数不适合定义对象的方法。
  5. 需要动态 this 的时候,箭头函数不适用。

2.Symbol类型
ES6 中,Symbol 是一种新的原始数据类型,表示独一无二的值。

let s = Symbol();
typeof s    // " Symbol "

通过上面运行代码,s 的数据类型变成了 Symbol,Symbol 与其他数据类型不同的是,Symbol 是独一无二的,不会与任何与其他属性名产生冲突。
注意:Symbol 函数生成的是一个原始类型的值,不是对象,所以Symbol 不能使用 new 命令。
Symbol 函数可以接受一个字符串作为参数,这样比较易于区分。

let s1 = Symbol("1")
let s2 = Symbol("2")
s1.toString() // "ymbol(1)"
s2.toString() // "ymbol(2)"

加了参数之后,一眼就可以区分,但不加参数的话,s1 和 s2 输出的内容是一样的。
Symbol 函数的参数只表示当前 Symbol 值的描述,所以相同参数的Symbol 函数的返回值是不相等的:

let s1 =  Symbol();
let s2 =  Symbol();
s1 = s2  // false
let s1 =  Symbol("1");
let s2 =  Symbol("1");
s1 = s2  // false

上面代码中,可以得出结论,无论有没有参数,无论参数是否相等,s1 和 s2 都不相等。
Symbol 的值不能与其他类型的值经行运算,但可以显示的转换为字符串或者布尔值:

let sym = Symbol(" My symbol");
"your symbol is"  +sym
//  报错

let sym =  Symbol(" My symbol ");
String(sym)
// 'Symbol(My symbol)'
sym.toString()
// 'Symbol(My symbol)'
let sym = Symbol();

Boolean(sym)  // 真
!sym  //假
if (sym){

}
Number(sym) 
// 报错

以上是ES6 中的箭头函数和Symbol数据类型的部分用法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值