簡體   English   中英

chrome瀏覽器控制台為什么在JavaScript中將字符串強制轉換為數字?

[英]Why does the chrome browser console forcibly coerce a string to a number in javascript?

新手問題。 我正在學習“您不知道JS”,我在第11頁上發現了此異常:

var a = "42";
var b = Number( a );

console.log( a ); // "42"
console.log( b ); //  42

現在,如果我在JS Bin中運行它,便會獲得該行為。 但是在我正在學習的最新的Chrome瀏覽器控制台中,我得到了這種意外的行為:

var a = "42";
var b = Number(a);
console.log(a);
console.log(b);
42              // no quotes?
42
< undefined

嘗試從數字到字符串手動強制轉換,這也是意外的結果:

a = 42;
b = a.toString();
console.log(a);
console.log(b);
42      
42            // no quotes?
< undefined

有人可以闡明這種行為嗎? 我用谷歌搜索了一下,加油。

值中沒有帶引號的事實是由於字符串不包含任何引號作為其內容 因此,除非是這種情況,否則您不應期望產生報價。

為了消除任何疑問,您始終可以使用typeof檢查類型:

 var a = "42"; var b = Number(a); var c = '"String with quotes as part of the content."'; var d = 'String with NO quotes as part of the content.'; console.log(a, typeof a); console.log(b, typeof b); console.log(c, typeof c); console.log(d, typeof d); 

請記住,特定瀏覽器決定實現其console行為的方式完全取決於他們。 由於console不是JavaScript的一部分,因此沒有任何標准。 因此,在這方面,發現一個客戶與另一個客戶之間的差異是完全正常的。 重要的是JavaScript運行時根據標准處理數據。

當查看控制台時,注銷時會發現輕微的色差。

數字將是藍色,而字符串將是黑色。

如果您不希望出現意外的脅迫,只需在進行比較或執行Scott Marcus建議的操作時使用===

Chrome console.log(..)輸出始終不帶引號。 嘗試看看:

console.log("asd")

並在控制台中嘗試:

var a = "42";
a;

應該返回想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM