先看一个图
本来以为JSON.parse只能接收字符串作为参数,实际上却不一定。
再看MDN上对于这个方法的描述
翻译下
貌似的确是要求为字符串,但是构造字符串描述的javaScript值或对象这句话说明还可以解析javaScript值,那么真相是?
推测JSON.parse会对入参做类型转换,如果是javascript的基本数据类型number,string,boolean或者Array,会自动调用toString方法转成字符串再解析。
因此JSON.parse(10),分为2步,首先会做类型转换,调用toSting()方法转成 ‘10’,再解析为JavaScript值数值10。其他以此类推。
null没有toString方法,是特别的。