1、ES6新增的Symbol是什么?
ES6新增的Symbol相当于一个身份证用于唯一识别的。
2、ES6新增的Symbol有什么用?
一般拿来做对象的KEY防止数据被篡改(二般情况我也没见过有知道的可以的话给我科普一下谢谢)。具体什么意思可以看第三点。
3、ES6新增的Symbol使用场景
一个方法test被另外一个类引用,假设test 中用var定义了变量name,即:
//文件A.js
test(){
var name = '张三'
}
而你要在另一个类里面调用方法test,而且刚好的是,在当前类里面也用定义了name,这个时候name是会改变主方法test里面的name值的:
//文件B.js
modify(){
var a = require("A.js");
var name = '李四';
//这个时候是会修改文件A.js里面的name值,也就是张三被改成李四了。
}
但是如果用symbol的话就不会出现以上问题,张三还是张三,李四是另外一个方法的李四(使用规则可以看看别人总结的我这里就不展开说了)
总结
在我理解里,symbol是为了解决var(全局变量)可能带来的数据不安全问题,对于let、const(局部变量)来说其实是用不上的,那用let、const不就行了吗?也不是,因为let、const是新出的,es4之前都是用的var为了兼容ES4之前的版本所以需要用symbol。