1樓:莫池宇
你的第一次測試使用了new關鍵字,這樣返回的是乙個string包裝物件,但你的console.log輸出為何會加 不得而知,換乙個測試環境試一下。
最後一次測試使用typeof檢測乙個字面量的包裝物件,typeof會返回Object,比如typeof new Number(123),也會返回Object。只有當你直接使用 typeof "i am a string" 或者 typeof 2的時候才會返回string 或者是 number。typeof 的返回值非常讓人困擾,並不能達到區分每個型別的目的,比如typeof null,返回的也是Object。
建議不要使用typeof做型別判斷,而是使用Object.prototype.toString.
call();
Object
.prototype
.toString
.call
(new
String
("i am a string"
));"[object String]"
2樓:
去讀讀ECMA262就行了,new String得到的是個包裝的字串物件。
至於console.log,是實現相關的。一般來說和REPL的輸出方式相近,方便檢視物件的值。
3樓:吳雲閣
所以用 typeof 不靠譜,判斷型別還是要用Object.prototype.toString.call(yourObject).
JavaScript中 ArrayBuffer 物件與 Blob 物件到底有什麼區別?
navegador 我說乙個很表面的,通常來說node比瀏覽器自由,但是瀏覽器的blob 有匹配的createObjectUrl node目前沒有直接的。這個通常看起來沒用,但是如果你不想去改底層的情況下,想實現多執行緒混合非同步分發模型的時候有用 徹底區分真非同步任務和執行緒模擬的非同步任務,然後...
javascript中Function prototype是物件還是函式
大雄 是函式我們先試一下 typeof Function function typeof Function prototype function varfn function typeoffn function typeoffn.prototype object 為什麼就這樣的,這就是因為 Func...
javascript中arguments和形參在改變值時為什麼會同步變化,不應該是值傳遞嗎?
應該是解析的問題吧,arguments 2 a,先是定義了,後是重新賦值,而且這個東西既然可以設計實驗驗證,應該就沒有什麼好糾結的吧。arguments主要是用於實現過載。 馮天然 Ecmascript5標準的10.6節有NOTE For non strict mode functions the ...