ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptで強制型変換を行う方法

JavaScriptで強制型変換を行う方法

青灯夜游
青灯夜游オリジナル
2021-04-19 14:27:414894ブラウズ

強制変換メソッド: 1. ToString()、ToNumber()、または ToBoolean() メソッドを使用します。 2. String()、Number() または Boolean() メソッドを使用します。 3. " " または "- を使用します。 "operator; 4. "if()" や "while()" などのステートメントを使用します。

JavaScriptで強制型変換を行う方法

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

1. 型変換ルール

1.ToString

通常のオブジェクトの場合、 toString メソッドを自分で定義すると、Object.prototype.toString() メソッドが呼び出されます。オブジェクトに独自の toString メソッドがある場合、文字列化はそのメソッドを呼び出し、その戻り値を使用します。

2.ToNumber

  • 基本型の場合、true は 1 に変換され、false は 0 に変換されます。 unknown は NaN に変換され、null は 0 に変換されます。
  • オブジェクト型はまず基本型の値に変換されます。数値以外の基本型の値が返された場合は、基本型の変換規則に従って強制的に数値に変換されます。値を対応するプリミティブ型の値に変換するために、抽象操作 ToPrimitive は、最初に値に valueOf() メソッドがあるかどうかを確認します。基本型の値が存在し、それを返す場合は、この値をキャストに使用します。そうでない場合は、toString() の戻り値 (存在する場合) を使用してキャストを実行します。 valueOf() も toString() も基本型の値を返さない場合、TypeError が生成されます。
let a = {
    valueOf:function(){
        return "42";
    }
};
let b = {
    toString:function(){
        return "42";
    }
};
let c = [4,2];
c.toString = function(){
    return this.join(""); //"42"
};

Number(a);     //42
Number(b);     //42
Number(c);     //42
Number('');    //0
Number([]);    //0
Number(["abc"];//NaN

3.ToBoolean

JavaScript の値は、強制的に false にできる値と、強制的に false にできる値に分けることができます。強制できる値 2種類の値をtrueに変換します。
偽値:

  • 未定義
  • null
  • false
  • 0、-0、NaN
  • ""

真の値: 上記のリストを除き、すべてのオブジェクトは真の値として理解でき、すべてのオブジェクトは真の値です

let a1 = new Boolean( false );
let b1 = new Number( 0 );
let c1 = new String( "" );
let d1 = Boolean(a1 && b1 && c1); //true

let a2 = [];
let b2 = {};
let c2 = function(){};
let d2 = Boolean(a2 && b2 && c2); //true

2. 強制的な型変換の表示

1. 文字列と数値の間の変換の表示

#文字列と数値変換は、2 つの組み込み関数 String(..)Number(..) によって行われます。
String(..) と Number(..) に加えて、文字列と数値の間の明示的な変換を実現する他のメソッドがあります。

let a = 42;
let b = a.toString();
let c = "3.14";
let d = +c;
b; // "42"
d; // 3.14

a.toString() は明示的ですが、暗黙的な変換が含まれます。 toString() は 42 のようなプリミティブ値では機能しないため、JavaScript エンジンは 42 のラッパー オブジェクトを自動的に作成し、そのオブジェクトに対して toString() を呼び出します。この明示的な変換には暗黙的な変換が含まれます。

2. ブール値への表示変換

let a = "0";
let b = [];
let c = {};
let d = "";
let e = 0;
let f = null;
let g;
Boolean( a ); // true
Boolean( b ); // true
Boolean( c ); // true
Boolean( d ); // false
Boolean( e ); // false
Boolean( f ); // false
Boolean( g ); // false

Boolean(..) は明示的ですが、一般的には使用されません。型をブール値に明示的にキャストする最も一般的な方法は、次のとおりです!!

let a = "0";
let b = [];
let c = {};
let d = "";
let e = 0;
let f = null;
let g;
!!a; // true
!!b; // true
!!c; // true
!!d; // false
!!e; // false
!!f; // false
!!g; // false

[推奨学習: javascript 上級チュートリアル ]

3 . 暗黙的なキャスト変換

1. 文字列と数値の間の暗黙的なキャスト変換

( 1) 演算子

は、数値加算と文字列連結の両方に使用できます。

オペランドの 1 つが文字列である場合 (または、ToPrimitive 抽象演算を呼び出して文字列が取得された場合)存在する場合は文字列の連結が実行され、それ以外の場合は数値の加算が実行されます。配列の valueOf() オペレーションは単純なプリミティブ値を取得できないため、代わりに toString() を呼び出します。したがって、以下の例の 2 つの配列は「1,2」と「3,4」になります。それらを連結すると「1,23,4」が返されます。

let a = "42";
let b = "0";
a + b; // "420"

let c = 42;
let d = 0;
c + d; // 42

let x = [1,2];
let y = [3,4];
x + y; // "1,23,4"

文字列変換には演算子を使用できます。数値を空の文字列 "" と比較して文字列に変換できます。

let a = 42;
let b = a + "";
b; // "42"

a "" (暗黙的) と前の文字列には微妙な違いがあります(a)(明示的)の間に注意してください。

ToPrimitive 抽象操作ルールに従って、「」は a の valueOf() メソッドを呼び出し、ToString 抽象操作を通じて戻り値を文字列に変換します。 String(a) は ToString() を直接呼び出します。最終的に返されるのは文字列ですが、a が数値ではなくオブジェクトの場合、結果は異なる可能性があります

let a = {
    valueOf: function() { return 42; },
    toString: function() { return 4; }
};
a + "";         // "42"
String( a );    // "4"

(2) 文字列から数値へのキャストの場合

#-Yes 数値の減算演算子なので、a - 0 は a を数値にキャストします。これら 2 つの演算子は数値にのみ適用されるため、* 1 と /1 を使用することもできますが、そのような使用法はあまり一般的ではありません

let a = [3];
let b = [1];
a - b; // 2

2. 暗黙的な必須型 ブール値に変換

#ブール値の暗黙的なキャスト変換は、以下の場合に発生します。

(1) if(..)文の条件判定式。

(2) for ( .. ; .. ; .. ) 文の条件式(2番目)です。

(3) while (..) および do..while(..) ループの条件式。

(4) ? : の条件判定式。

(5) 論理演算子 || (論理 OR) および && (論理 AND) (条件式として) の左側のオペランド。

上記の場合、非ブール値は、前に紹介した ToBoolean 抽象操作ルールに従って、暗黙的にブール値にキャストされます。

プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !

以上がJavaScriptで強制型変換を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。