目次
オブジェクトは、次のように文字列に変換することができます:
ホームページ ウェブフロントエンド jsチュートリアル 暗黙的な型変換とは何ですか? JSの暗黙的な型変換の概要

暗黙的な型変換とは何ですか? JSの暗黙的な型変換の概要

Aug 11, 2018 pm 04:32 PM
暗黙的な型変換

この記事では、暗黙的な型変換とは何か? js の暗黙的な型変換の概要は、参考になると思います。

JavaScript のデータ型は非常に弱いので、算術演算子を使用する場合、たとえば、数値に文字列を加算することができます。異なるデータ型の間で操作を実行できる理由は、JavaScript エンジンが操作の前に暗黙的な型変換を実行するためです。次は数値型とブール型の追加です:

3 + true; 
// 结果:4
ログイン後にコピー

結果は数値型です。 C または Java 環境の場合、演算子の両側のデータ型が一致しないため、上記の操作はエラーになります。ただし、JavaScript では、まれに、間違った型によってエラーが発生します。 null または未定義の属性を受け取る場合は、次のようになります。

"hello"(1); 
//结果: error: not a function
null.x; 
// 结果:error: cannot read property 'x' of null
ログイン後にコピー

ほとんどの場合、JavaScript はエラーを起こさず、対応する型変換を自動的に実行します。たとえば、-、*、/、% などの算術演算子はオペランドを数値に変換しますが、「+」記号は場合によっては算術プラス記号である場合もあれば、算術プラス記号である場合もあります。は文字列です。接続シンボルは、次のようにオペランドによって異なります:

2 + 3; 
//结果: 5
"hello" + " world"; 
// 结果:"hello world"
ログイン後にコピー

ただし、文字列と数値が追加された場合、JavaScript は、数値が最初に来るか文字列が先に来るかに関係なく、数値を文字に自動的に変換します:

"2" + 3; 
// 结果:"23"
2 + "3";
 //结果: "23"
ログイン後にコピー

文字列と数値を足した結果は文字列です!

以下のように、「+」の演算方向は左から右であることに注意してください:

1 + 2 + "3"; 
// "33"
ログイン後にコピー

これは次と同等です:

(1 + 2) + "3"; 
// "33"
ログイン後にコピー

対照的に、次の結果は異なります:

1 + "2" + 3; 
// "123"
ログイン後にコピー

ただし暗黙的な型変換により、一部のエラーが隠れてしまうことがあります。たとえば、null は 0 に変換され、未定義は NaN に変換されます。次のように、NaN と NaN は等しくないことに注意してください (これは浮動小数点数の精度によるものです):

var x = NaN;
x === NaN; // false
ログイン後にコピー

JavaScript は値が NaN かどうかを検出する isNaN を提供しますが、これは完全に正確ではありません。 isNaN 関数を呼び出す前に、次のように、元々 NaN ではなかった値を NaN に変換する暗黙的な変換プロセスがあるためです。

isNaN("foo"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN({ valueOf: "foo" }); // true
ログイン後にコピー

上記のコードは、isNaN を使用してテストした後、文字列が未定義の場合、またはオブジェクトが見つかった場合でも、結果はすべて true を返します。 ! !しかし、それらは NaN ではありません。

要するに、isNaN が NaN を検出することは信頼できません。 ! !

NaN を検出する信頼性が高く正確な方法があります。

NaN のみがそれ自体と等しくないことは誰もが知っています。数値がそれ自体と等しいかどうかを判断するには、不等号 (!==) を使用できます。したがって、次のように NaN を検出することもできます。 use このモードは、次のように関数として定義されます:

var a = NaN;
a !== a; // true
var b = "foo";
b !== b; // false
var c = undefined;
c !== c; // false
var d = {};
d !== d; // false
var e = { valueOf: "foo" };
e !== e; // false
ログイン後にコピー

オブジェクトの暗黙的な変換

オブジェクトは、次のように文字列に変換することができます:

function isReallyNaN(x) {
    return x !== x;
}
ログイン後にコピー

Object。変換 toSting 関数を呼び出すことで文字列に変換されます。手動で呼び出して確認することもできます。

"the Math object: " + Math; // "the Math object: [object Math]"
"the JSON object: " + JSON; // "the JSON object: [object JSON]"
ログイン後にコピー

同様に、オブジェクトは Of 関数の値を通じて数値に変換することもできます。これを自分で定義することもできます。 value Of 関数は次のようになります:

Math.toString(); // "[object Math]"
JSON.toString(); // "[object JSON]"
ログイン後にコピー

オブジェクトに valueOf メソッドと toString メソッドの両方がある場合、次のように、value Of メソッドが常に最初に呼び出されます:

"J" + { toString: function() { return "S"; } }; // "JS"
2 * { valueOf: function() { return 3; } }; // 6
ログイン後にコピー

一般的に、value Of と toString で表される値を作成するようにしてください。は同じです (ただし、タイプは異なる場合があります)。

最後のタイプの強制型変換は、if、||、&& などの「真理演算」と呼ばれますが、それらのオペランドは必ずしもブール値である必要はありません。 JavaScript は、単純な変換ルールを通じて一部の非ブール値をブール値に変換します。ほとんどの値は true に変換されますが、少数の値のみが false です。それらは次のとおりです: false、0、-0、""、NaN、null、未定義

。値が false の数値、文字列、オブジェクトがあるためです。 , したがって、真理値変換を直接使用して、関数のパラメーターが渡されるかどうかを判断することは、あまり安全ではありません。たとえば、次のようなデフォルト値を持つオプションのパラメータを持つことができる関数があります:

var obj = {
    toString: function() {
        return "[object MyObject]";
    },
    valueOf: function() {
        return 17;
    }
};
"object: " + obj; // "object: 17"
ログイン後にコピー
この関数は、0、-0 を含む、真の値が false であるパラメータを無視します。
function point(x, y) {
if (!x) {
    x = 320;
}
if (!y) {
    y = 240;
}
    return { x: x, y: y };
}
ログイン後にコピー

未定義を検出するより正確な方法is typeof 演算を使用します:

point(0, 0); // { x: 320, y: 240 }
ログイン後にコピー

この書き方は 0 と unfineed を区別できます:

function point(x, y) {
if (typeof x === "undefined") {
    x = 320;
}
if (typeof y === "undefined") {
    y = 240;
}
    return { x: x, y: y };
}
ログイン後にコピー

もう 1 つの方法は、次のようにパラメータを使用して未定義と比較することです:

point(); // { x: 320, y: 240 }
point(0, 0); // { x: 0, y: 0 }
ログイン後にコピー

概要:

型エラーは 1 つあります。型変換により非表示になります。

2. 「+」は、オペランドに応じて、文字列の連結と算術加算の両方を表すことができます。オペランドの 1 つが文字列の場合、それは文字列の連結です。

3. オブジェクトは、value Of メソッドを通じてそれ自体を数値に変換し、toString メソッドを通じてそれ自体を文字列に変換します。

4. Of メソッドの値を持つオブジェクトは、文字列形式で等しい数値を返すように対応する toString メソッドを定義する必要があります。

5. 一部の未定義変数を検出する場合は、直接真値演算を行うのではなく、型 Of または未定義との比較を使用する必要があります。

関連する推奨事項:

JS 暗黙的型変換の概要

暗黙的変換を使用するには?暗黙的変換例の使用法をまとめます

JavaScriptデータ型の暗黙的型変換の簡単な紹介_javascriptスキル

以上が暗黙的な型変換とは何ですか? JSの暗黙的な型変換の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語の暗黙的型変換と明示的型変換とは何ですか? C言語の暗黙的型変換と明示的型変換とは何ですか? Sep 08, 2023 pm 10:13 PM

あるデータ型を別のデータ型に変換することを型変換と呼びます。暗黙的な型変換 明示的な型変換 暗黙的な型変換 オペランドのデータ型が異なる場合、コンパイラは暗黙的な型変換を提供します。これは、小さいデータ型を大きいデータ型に変換することによって、コンパイラーによって自動的に行われます。 inti,x;floatf;doubled;longintl;ここで、上記の式は最終的に「double」値に評価されます。例 以下は、暗黙的な型変換の例です。-intx;for(x=97;x<=122;x++){ printf("%c",x);/*Im

mysqlにはどのような暗黙的な型変換が存在しますか? mysqlにはどのような暗黙的な型変換が存在しますか? Nov 14, 2023 am 11:28 AM

MySQL に存在する暗黙的な型変換には、文字列から数値型、日付と時刻の型、浮動小数点と整数の型、NULL 値などが含まれます。詳細な紹介: 1. 文字列から数値型への暗黙的な型変換 文字列が数値型の値と比較または計算される場合、MySQL は文字列を数値型に変換します; 2. 日付および時刻型の暗黙的な型変換 暗黙的な型変換、MySQL では、日付と時刻型は他のデータ型との暗黙的な型変換も実行できます; 3. 浮動小数点型や整数型などの暗黙的な型変換。

golang関数の型変換 golang関数の型変換 Apr 19, 2024 pm 05:33 PM

関数内型変換を使用すると、ある型のデータを別の型に変換できるため、関数の機能が拡張されます。 type_name:=variable.(type) という構文を使用します。たとえば、strconv.Atoi 関数を使用すると、文字列を数値に変換し、変換が失敗した場合にエラーを処理できます。

C++関数のデフォルトパラメータと可変パラメータの長所と短所の比較 C++関数のデフォルトパラメータと可変パラメータの長所と短所の比較 Apr 21, 2024 am 10:21 AM

C++ 関数のデフォルト パラメーターの利点には、呼び出しの簡素化、可読性の向上、エラーの回避などがあります。欠点は、柔軟性が限られていることと、名前の制限があることです。可変引数パラメーターの利点には、無制限の柔軟性と動的バインディングが含まれます。欠点としては、複雑さの増大、暗黙的な型変換、デバッグの難しさなどが挙げられます。

暗黙的な型変換: 型のさまざまなバリエーションとプログラミングにおけるその応用の探求 暗黙的な型変換: 型のさまざまなバリエーションとプログラミングにおけるその応用の探求 Jan 13, 2024 pm 02:54 PM

さまざまな種類の暗黙的な型変換と、プログラミングにおけるその役割を調べます。 はじめに: プログラミングでは、さまざまな種類のデータを処理する必要があることがよくあります。場合によっては、特定の操作を実行したり、特定の要件を満たすために、あるデータ型を別のデータ型に変換する必要があります。このプロセスでは、暗黙的な型変換が非常に重要な概念になります。暗黙的な型変換とは、変換型を明示的に指定せずに、プログラミング言語が自動的にデータ型変換を実行するプロセスを指します。この記事では、さまざまな種類の暗黙的な型変換と、プログラミングにおけるその役割について説明します。

C言語のintとfloatの違いは何ですか C言語のintとfloatの違いは何ですか Apr 29, 2024 pm 10:12 PM

C 言語の int 変数と float 変数の違いは、型が異なることです。int は整数の格納に使用され、float は小数の格納に使用されます。ストレージ サイズ: int は通常 4 バイトを必要とし、float も 4 バイトを必要とします。精度: int は正確な整数を表しますが、float の精度は限られています。範囲: int の範囲は通常 -2^31 から 2^31-1 ですが、float の範囲はさらに広くなります。算術演算: int と float は算術演算と比較を実行できますが、結果は精度の制限によって影響を受ける可能性があります。型変換: int と float の間で明示的または暗黙的な型変換を実行できます。

mysql インデックス障害のいくつかの状況 mysql インデックス障害のいくつかの状況 Feb 21, 2024 pm 04:23 PM

一般的な状況: 1. 関数または演算を使用する; 2. 暗黙的な型変換; 3. 等しくない (!= または <>) を使用する; 4. LIKE 演算子を使用し、ワイルドカードで始める; 5. OR 条件; 6. NULL値、7. 低いインデックス選択性、8. 複合インデックスの左端の接頭辞の原則、9. オプティマイザーの決定、10. FORCE INDEX および IGNORE INDEX。

C#とC言語の関係は何ですか? C#とC言語の関係は何ですか? Apr 04, 2024 pm 12:03 PM

C# と C 言語の間には、構文の類似性、オブジェクト指向プログラミングのサポート、ガベージ コレクション、タイプ セーフティ、プラットフォームの違いなど、密接な関係があります。 C# は、C 言語の構文とオブジェクト指向プログラミングの基礎を継承し、それを拡張してガベージ コレクション、タイプ セーフティ、プラットフォームの特異性などの機能を組み込みます。

See all articles