猿问

在浏览器环境中,{}.toString()为何不能正确运行

尝试一下常用数值直接调用toString()方法,发现 null undefined {} 直接调用该方法会报错。

前面2个能理解,但是{}.toString()为何不能直接使用,需要显示转换为对象来调用该方法,比如({}).toString()。
此时的显示结果是"[object Object]"。
主要想知道:
1.处在赋值操作右侧时的{},比如 var a = {};是一个什么样的东西。
2.{} 与 [] 在创建时的区别,[]在申明时已经完成了对象创建操作。[].toString() 可以正常输出内容,证明此时的 [] 已经是一个完整的对象。
多谢各位大神帮忙解惑。

慕田峪7331174
浏览 360回答 1
1回答

12345678_0001

貌似在《你不知道的JS》里看到过,凭印象转述一下:{在最左侧时,浏览器理解为代码块,如if(){} 这个{}包裹的代码块.比如结果就不一样。[] + {} 是 []转为'', {}转为"[object Object]",{} + [] 是 {}作为空代码块, []转为0var a = {};{}这时是一个空对象
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答