比如在 console 里发现:
{a: '1'} == {'a': '1'}的值为false,这是为什么?
{a: '1'} == {'a': '1'}
false
是因为是两个对象所以不相等么。。
好吧。。。 {'a': '1'} == {'a': '1'}也是false。。。看来是这样。。。
{'a': '1'} == {'a': '1'}
你写的是2个对象,对象都是唯一独立的,任何2个对象都是不相等的 引用类型,js基础啊
另外, 不知楼主是混淆了还是问错了, 书写 JSON 与书写 JS 代码是不一样的. JSON 中字典 key 必须写作字符串形式, 并且须以双引号而非单引号引起. 如
JSON.parse('{ a: 1 }') JSON.parse("{ 'a': 1 }")
都会出错.
而书写 JS 对象才能省去引号 (且仅当字符串内容为 JS 标识符或数值, bool 值时, 部分浏览器支持关键字直接作为 key) 或使用单引号替代双引号引起 key 的内容.
在 js 中,对象时引用类型,而引用类型比较相等的时候,比较的是内存地址,所以即使两个看起来一摸一样的对象,如果内存地址不相等的话,那么也是不等的。另外请参考三楼。
JSON数据本身就是字符串,经过JSON.parse才转化为javascript对象,你在console中输入的是对象,而不是JSON字符串。另外对象的key也可看作是字符串,例如一个对象{1:1},其中的属性名——1实际上是string类型,属性值——1则是number类型