JS输出为[object object]
今天在学习ES6中的 Symbol
数据类型时,在写demo时控制台输出为 Symbol[object object]
,当时有点疑惑,查阅了相关资料后搞清楚了其中的原因。
在解释之前,由于有些小伙伴可能还没有接触过ES6,所以先说一下上面用到的ES6的一些特性:
const: 声明一个常量
Symbol:JS中的第7种数据类型,表示独一无二的值。Symbol类型的值有Symbol函数生成。
如
var s1 = Symbol("abc");
// 生成Symbol类型的值s=Symbol(abc)
这个值是独一无二的。
var s2 = Symbol("abc");
//s2 = Symbol(abc)
console.log(s1 === s2)
// false, 说明这两个值是不相等的如果 Symbol 的参数是一个对象,那么就会调用
toString()
方法先将其转换为字符串。关于 Symbol 更详细的介绍可以参考阮一峰老师的ES6标准入门。
现在上那段输出 Symbol[object object]
的代码: