ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript スキルにおける暗黙的な型変換の簡単な分析

JavaScript_javascript スキルにおける暗黙的な型変換の簡単な分析

WBOY
WBOYオリジナル
2016-05-16 17:10:441030ブラウズ

関数またはメソッド呼び出しを通じて特定の型を別の型に明示的に変換する場合、それは明示的変換と呼ばれ、その逆は暗黙的型変換と呼ばれます。 Google や Wikipedia には「表示型変換」や「暗黙的型変換」という言葉はありません。そう呼びましょう。

1. オペレーション

における暗黙的な型変換

1, " " 演算子

コードをコピー コードは次のとおりです:

var a = 11, b = '22';
var c = a b;

ここでは、エンジンはまず a を文字列「11」に変換してからそれを接続します。 b の場合は「1122」になります。 b を 22 にしてから算術加算を実行すればよいのではないかと疑問に思う人もいるかもしれません。その場合、c は 33 になります。演算子 " " の両側が数値型で、もう一方が文字列型である場合、js エンジンは算術加算演算の代わりに文字列連結演算を実行するように規定する理由はありません。演算子「 」の機能を利用すると、数値を文字列に簡単に変換できます。たとえば、
コードをコピーします。 コードは次のとおりです。

var a = 11; 🎜>alert(typeof a); //-->number
a = a '';
alert(typeof a); //-->string


2," -" 演算子 「-」は単項演算子 (負数) または二項演算子 (減算演算) です。たとえば、


コードをコピーします。 コードは次のとおりです。
var a = 11, b = '5';
var c = a - b;
alert(typeof c); //-->number

これは、上記の " " に反します。文字列 b は暗黙的に数値 5 に変換され、算術減算が実行されます。この機能を使用すると、文字列を数値に簡単に変換できます

コードをコピー コードは次のとおりです:
var a = '11';
a = a - ''; // -->number



ステートメント内の 2 つの暗黙的な型変換 1、


var obj = {name:'jack'}
if(obj){
//さらに実行します
}


ここで、obj は暗黙的にブール型に変換されます

2, while


var obj = {name:'jack'}
while(obj){
//さらに実行
}


if と同じ

3、for の場合の型変換

オブジェクト リテラルを定義するときに、識別子から文字列への暗黙的な変換が発生します。

var person = {'name':' jack', "age":20,school:'PKU'};
for(var a in person){
alert(a ": " typeof a);
ここでは、名前と年齢にそれぞれ一重引用符または二重引用符が追加され、文字列型であることを強調していますが、学校には一重引用符または二重引用符が追加されていません。オブジェクトのプロパティを調べて、そのタイプを確認します。 school も暗黙的に String 型に変換されていることがわかります。

配列のインデックスは実際には文字列型です。驚くべきことですが、それは本当です。たとえば、

コードをコピーします。

コードは次のとおりです。 var ary = [1, 3,5,7 ]; for(var a in ary){ alert(a ": " typeof a)



3. アラート中に存在します



の暗黙的な型変換
コードは次のとおりです。 String .prototype.fn = function(){return this}; var a = 'hello'; alert(typeof a.fn()); alert(a.fn()); //-->こんにちは

これを返す String プロトタイプに fn メソッドを追加します。これはオブジェクトであるため、typeof a.fn() は当然オブジェクトを返します。
キーは最後のalert(a.fn())です。a.fn()が返すものは明らかにオブジェクトですが、表示のために暗黙的に文字列「hello」に変換されます。

同じ状況が、


Number.prototype.fn = function(){return this};
var a = 10
alert(typeof a.fn());//-->object
alert (a. fn()); //-->10

a.fn() はオブジェクト タイプを返しますが、alert(a.fn()) が次のように変換されるときに暗黙的に変換されます。数字。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。