先看一個圖
本來以為JSON.parse只能接收字符串作為參數,實際上卻不一定。
再看MDN上對於這個方法的描述
翻譯下
貌似的確是要求為字符串,但是構造字符串描述的javaScript值或對象這句話說明還可以解析javaScript值,那么真相是?
推測JSON.parse會對入參做類型轉換,如果是javascript的基本數據類型number,string,boolean或者Array,會自動調用toString方法轉成字符串再解析。
因此JSON.parse(10),分為2步,首先會做類型轉換,調用toSting()方法轉成 ‘10’,再解析為JavaScript值數值10。其他以此類推。
null沒有toString方法,是特別的。