2016-12-01 5 views
-2

それは、配列、文​​字列ではないのですが、警告やinnerHTMLプロパティが正しく結果を示し、なぜ私は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. 

ような配列を持っていますか? 私は他のプログラミング技術ではエラーが発生するはずであり、これは文字列が許容されない変換の配列であることをメッセージで伝えてくれたと思います。

+1

のようにtryキャッチを使用してくださいそれと同じinnerHtmlを印刷しました。 – mina

答えて

0

alertをオブジェクト値(オブジェクトは単なる特殊なケース)で呼び出すと、その値で自動的にtoStringが呼び出されます。

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

のJavascriptについての事は、それが動的に型強制で入力されたということです。 laymansという言葉では、それは自動的にあなたのデータを正しいタイプに変換することを意味します。たとえば:

// 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

javascriptはデフォルトの.toString()メトスで表示する文字列配列を受け入れるため、エラーをスローしません。あなたがキャッチエラーを処理したい場合、私は、タイプを変換したり、取得する方法を探し、なぜ警告受け入れられた配列について尋ねIAMとそれを文字列に変換されていないこの

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

関連する問題