2016-12-01 33 views
-2

我在javascript初學者,我有一個問題,我有一個像如何提醒打印數組,但它需要字符串?

 var nameOfName=["john","mark"]; 
     alert(nameOfName); // or 
document.getElementById("anyelementid").innerHTML=nameOfName; //should also trigger error because we are trying to put array in place of string. 

爲什麼警報或innerHTML的數組正確顯示的結果,儘管它是一個數組,而不是一個字符串? 我認爲在其他編程技術中應該觸發錯誤,並且一條消息告訴我們這是一個不允許進行字符串轉換的數組。

+1

我不尋求如何轉換或獲取型,IAM詢問爲何警報接受陣列並把它轉換爲字符串然後打印出來,也是相同的innerHtml。 – mina

回答

0

當用對象值(數組是對象,只是一個特殊情況)調用alert時,它會自動調用toString該值。

var arr = [1, 2, 3]; 
 
// Notice that they show the same result 
 
alert(arr); 
 
alert(arr.toString());

關於JavaScript的事情是,它的動態與強制類型轉換類型。用俗語說,這意味着它會自動嘗試將數據轉換爲給定上下文的正確類型。例如:

// Converts the number to a string 
 
console.log(1 + '2'); 
 

 
// Converts the booleans values to numbers 
 
console.log(true + true);

+0

以及innerHTML。是嗎? – mina

+0

@mina看我的編輯。基本上,JS會嘗試將數據轉換爲適合您的正確類型。 'innerHTML'需要一個字符串,所以它試圖給它一個字符串。 –

+0

@mina所以?同樣的想法適用。你正試圖給一個需要字符串的東西分配一個數組。所以JS將數組轉換爲一個字符串,並使用該值。 –

0

我想提醒的JavaScript解析您的數組字符串表現出來,這就是原因。如果你想知道什麼類型的對象,使用typeof

如果您有JSON,並希望將其打印爲字符串,請使用JSON.stringify

0

由於javascripts接受字符串數組顯示默認情況下.toString() methos它不會拋出錯誤。如果你要處理捕獲錯誤,請使用嘗試捕捉這樣

var nameOfName=["john","mark"]; 
 
try{ 
 
document.getElementById("anyelementid").innerHTML=nameOfName; 
 
    } 
 
catch(ex){ 
 
document.getElementById("anyelementid").innerHTML=ex.message; 
 
    }
<div id="anyelementid"></div>