2012-02-16 44 views
1

我正在學習JavaScript,被問及這個問題,任何人都可以幫忙嗎?以下Javascript語句返回什麼?爲什麼?下列Javascript語句返回什麼?爲什麼?

parseInt(「07」); parseInt(「09」); parseInt(「010」);

「1」+ 2 + 3;

「1」== 1; 「1」=== 1; 「1」== true; 「1」=== false;

+0

如果這是功課請標記爲此,也可以找到返回你可以只使用jsbin或smt,然後想想爲什麼 – 2012-02-16 14:32:44

+0

你可以輕鬆地寫一個簡單的HTML頁面並使用alert()來給你答案 – Dampsquid 2012-02-16 14:35:47

+0

http ://bonsaiden.github.com/JavaScript-Garden/#types.equality和http://bonsaiden.github.com/JavaScript-Garden/#types.casting – Niklas 2012-02-16 14:38:39

回答

2

火了發展的控制檯(如一個在Chrome開發者工具或螢火蟲)和類型的報表,你會得到的結果:

parseInt('07'); -> 7 
parseInt('09'); -> 0 
parseInt('010'); -> 8 

發生這種情況是因爲parseInt會嘗試確定傳遞的字符串中包含的數字的正確底數。這些數字以0開頭,所以JavaScript假定您傳遞的是「八進制」值。 09例如在那裏不存在,所以它返回0. 您可以通過將第二個參數傳遞給parseInt(稱爲「基數」)來輕鬆解決此問題。因此,如果您想要十進制數字,是這樣的大部分的時間,你寫的:

parseInt('09', 10); 


"1" + 2 + 3; 

將返回字符串「123」,因爲JavaScript的自動轉換幕後的類型。將數字添加到字符串將僅轉換它們並將它們連接起來。

"1" == 1; "1" === 1; "1" == true; "1" === false; 

這裏我們有兩個不同的運算符進行比較。 ==將僅比較值,===將比較值和類型。除非您確定要使用==,否則在大多數情況下使用===被認爲是一種很好的做法。

您的第一條語句將返回true,類型在幕後轉換並且值相同,您的第二條語句將返回false,因爲類型未轉換,並且您將String與Number進行比較。第三個將返回true,因爲「1」被認爲是真值。因爲這個原因,第四種情況當然會返回錯誤。

5
parseInt("07"); parseInt("09"); parseInt("010"); 

7, 
0, (invalid) 
8 

。這是因爲前面指定了八進制數字0。八進制數只能包含0-7的字符。 9無效。

"1" + 2 + 3; 

123(串)

"1" == 1; "1" === 1; "1" == true; "1" === false; 

true 
false 
true 
false 
相關問題