序文: 日常の開発では、変数のデータ型や変数が null かどうかを判別する必要がある状況によく遭遇します。型を判別するための演算子はどのように選択しますか?この記事では、開発者が習得しなければならない 1. typeof演算子
(1)戻り値は文字列型であり、
(2)一般的な使用方法 console.log(typeof undefined); //'未定義' console.log(typeof true);//'bpplean' console.log(typeof ("number")); //'文字列' console.log(typeof "number"); //'文字列' console.log(typeof 1);//'数値' console.log(typeof Symbol());//'シンボル' //Array や Null などの特殊なオブジェクトの場合、typeof は常に object を返します。これが typeof の制限です。console.log(typeof null); //'object' console.log(typeof [1, 2, 3]);//'オブジェクト' console.log(typeof undefined); //'未定義' //typeof演算子を使用して関数を他のオブジェクトと区別します function f1() { console.log(111); } console.log(typeof f1); //'関数' console.log(typeof f1()); // 111 '未定義' (3)typeofを使って変数が存在するかどうかを調べることはできない var a; (a === 未定義)の場合{ console.log("変数が存在しません") } それ以外 { console.log("変数が存在します") } // 変数が存在しません 2. インスタンスオブ演算子
関数 f1() { console.log(111); console.log(f1 インスタンスオブオブジェクト);//true console.log(f1 関数のインスタンス);//true console.log(f1 instanceof RegExp); //false すべての参照値は
関数 myInstanceof(left, right) { let proto = Object.getPrototypeOf(left), // オブジェクトのプロトタイプを取得します prototype = right.prototype; // コンストラクター関数のプロトタイプオブジェクトを取得します // コンストラクター関数のプロトタイプオブジェクトがオブジェクトのプロトタイプチェーン上にあるかどうかを判断します while (true) { if (!proto) が false を返す; if (proto === prototype) が true を返す。 proto = Object.getPrototypeOf(proto); } } 3. typeof と instanceof の違いと開発での使用に関する提案
上記の 2 つの方法には欠点があり、すべてのシナリオのニーズを満たすことができないことがわかります。 一般的にデータ型を検出する必要がある場合は、 console.log(Object.prototype.toString.call(undefined)) //"[オブジェクトは未定義です]" console.log(Object.prototype.toString.call(true)) // "[オブジェクト ブール値]" console.log(Object.prototype.toString.call('1')) // "[オブジェクト 文字列]" console.log(Object.prototype.toString.call(1)) // "[オブジェクト番号]" console.log(Object.prototype.toString.call(Symbol())) // "[オブジェクト シンボル]" console.log(Object.prototype.toString.call({})) // "[オブジェクト Object]" console.log(Object.prototype.toString.call(function () { })) // "[オブジェクト Function]" console.log(Object.prototype.toString.call([])) //"[オブジェクト配列]" console.log(Object.prototype.toString.call(null)) //"[オブジェクト Null]" console.log(Object.prototype.toString.call(/123/g)) //"[オブジェクト正規表現]" console.log(Object.prototype.toString.call(new Date())) //"[オブジェクト Date]" 要約: データ型の判断における 以下もご興味があるかもしれません:
|
<<: 一定時間後にNavicatがデータベースから自動的に切断される問題の解決方法
>>: MySQLからHiveにさらにデータをインポートするためのソリューション
以前、カスタム関数を使用して MySQL でツリー構造を再帰的にクエリする方法についての記事を書きま...
目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...
目次簡単なコンポーネントの例より複雑な親子コンポーネントのケースオンセレクトの書き方反応する子供Re...
序文これまで当社ではMySQLの5.7シリーズを使用していましたが、バージョン8.0のリリースに合わ...
基本環境パゴダ設置サービスパゴダにインストールされた[Pythonプロジェクトマネージャー]パゴダに...
この記事では、pycharm2017でpython3.6とmysqlを接続する方法を参考までに紹介し...
今日は、ローカルの Docker プロジェクト イメージを dockerhub に公開する方法を紹介...
目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...
ssh-secure シェルは、安全なリモート ログインを提供します。組み込みシステムを開発し、Li...
OS X 環境で MySQL を起動すると、エラー メッセージが表示されます。 016-03-03T...
目次コンストラクタ新しいオペレーター自分で新しいものを実装するコンストラクタnew を導入する前に、...
この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...
絶対長さピクセルpx はピクセル値であり、メートルやセンチメートルのような固定の長さです。相対的な長...
概要バックアップは災害復旧の基礎であり、システム操作エラーやシステム障害によるデータ損失を防ぐために...
目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...