ホームページ > 記事 > ウェブフロントエンド > JavaScript が弱い型付け言語であるのはなぜですか?
弱い型指定言語では、データ型を無視でき、変数に異なるデータ型の値を割り当てることができます。JavaScript 変数は、さまざまな場合に異なる型として解釈でき、これにより変数の暗黙的な変換が可能になります。タイプとキャスト。 JavaScriptでは変数のデータ型を事前に宣言しなくても変数を使用することができますが、その際JavaScriptインタプリタが状況に応じて正しいと判断します。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
静的言語
: 使用前に変数のデータ型を確認する必要がある言語を静的言語と呼びます。
動的言語
: 動作中にデータ型をチェックする必要がある言語を動的言語と呼びます。
通常、型変換を秘密裏に実行する操作は 暗黙的型変換
:
暗黙的型変換をサポートする言語は 弱い型付け言語
、暗黙的な型変換をサポートしない言語は、強く型付けされた言語
と呼ばれます。
厳密に型指定された言語:
データ型定義を強制する言語。つまり、変数に特定のデータ型が割り当てられると、キャストされない限り、常にそのデータ型になります。たとえば、整数変数 a を定義した場合、プログラムは a を文字列型として扱うことはできません。強く型指定された定義言語は、タイプセーフな言語です。
弱い型指定言語:
データ型を無視できる言語。これは、変数にさまざまなデータ型の値を割り当てることができる、厳密に型指定された定義言語の逆です。
弱い型指定言語では、変数の型の暗黙的な変換や強制的な型変換などが許可されます。たとえば、文字列や値は自動的に変換できますが、強い型指定言語では通常、これが許可されません。
JavaScript は型付けが弱い言語です。
JavaScript は「型付けが緩い」プログラミング言語です。つまり、JavaScript 変数はさまざまな言語で解釈できます。さまざまなタイプの機会。
JavaScript では、変数のデータ型を事前に宣言しなくても変数を使用できますが、このとき JavaScript インタプリタは状況に応じて正しいと判断します。ここで文字列を変数に保存し、後でそれを数値として使用したい場合、文字列に数値のようなものが含まれていなければならないという条件で、これは JavaScript で完全に実現可能です。
JS の弱い型の具体化
一般的な規則として、制約が強いほどエラーは発生しにくくなりますが、記述する際には面倒になります。プログラム。 JavaScript では制約が比較的弱いため、この種のエラーが発生しやすくなります。 最も単純な例:
別の例は次のとおりです:
var a =200; var b ="1"; var c= a + b;
c は 201 であると予想されるかもしれません。しかし実際には、これは「2001」であり、強く型付けされた言語では決して発生しないエラーです。ただし、JavaScript にはこれらの制約がないため、数値型と文字列型を簡単に連結できます。
別の例は次のとおりです。
var a = '11'; a = a - ''; console.log(typeof a);// -->number
「-」は単項にすることができます。演算演算子 (負の値)、またはバイナリ (減算演算)
ループ ステートメント (if、while) では、Object オブジェクトを BOOLEAN 値から暗黙的に変換できます。
var obj = {name:'jack'} if(obj){ //do more }
見つけるのがさらに難しいのは、alert() 関数です。
String.prototype.fn = function(){return this}; var a = 'hello'; alert(typeof a.fn()); //-->object alert(a.fn()); //-->hello
これは現在のクラスのインスタンス オブジェクトとして理解できることがわかっています。オブジェクトなので、typeof a. fn() は当然オブジェクトを返します。
キーは最後の alert(a.fn())
, a.fn()
返されたオブジェクトは明らかにオブジェクトですが、暗黙的に変換されますinto 文字列「hello
」が表示されます。
【関連する推奨事項: JavaScript ビデオ チュートリアル 、プログラミング ビデオ 】
以上がJavaScript が弱い型付け言語であるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。