タイプ判定から始めるJavaScript では変数の型チェックが非常に面倒です。単純に 以下に簡単な例をいくつか挙げます。 console.log(typeof null) // 'オブジェクト' console.log(typeof new Array) // 'オブジェクト' console.log(typeof new String) // 'オブジェクト' その後、 const getTypeString = obj => Object.prototype.toString.call(obj) getTypeString(null) // '[オブジェクト Null]' getTypeString('string') //'[オブジェクト文字列]' getTypeString(新しい文字列) //'[オブジェクト文字列]' 定数 getTypeString = obj => { Object.prototype.toString.call(obj) を返します。 } 定数isType = 型 => { 戻り値: getTypeString(obj) === `[オブジェクト ${type}]` を返します } } const isArray = isType('Array') // このメソッドは通常 Array.isArray に置き換えられます const isNull = isType('Null') 定数isObject = isType('オブジェクト') 定数isRegExp = isType('RegExp') const isFunction = isType('関数') const isAsyncFunction = isType('AsyncFunction') isNull(null) // 真 isObject({}) // 真 isRegExp(/\w/) // 真 isFunction(() => {}) // 真 isAsyncFunction(async () => {}) // 真 しかし、Node.js には、変数の型を決定するための API セットが実際に存在します。そして、非常に豊富な機能を持っています。基本的な型の判定に加え、Promiseオブジェクト、Dateオブジェクト、各種ArrayBuffersの判定もサポートしています。 const 型 = require('util/types') types.isDate(新しい日付) // true types.isPromise(新しいPromise(() => {})) // true types.isArrayBuffer(新しいArrayBuffer(16)) // 真 厳格な平等JavaScript では、オブジェクト、配列、その他の変数の等価性を判断するときに const util = require('util') const val1 = { 名前: 'shenfq' } const val2 = { 名前: 'shenfq' } console.log('val1 === val2', val1 === val2) // false console.log('isDeepStrictEqual', util.isDeepStrictEqual(val1, val2)) // true このメソッドは、配列が厳密に等しいかどうかを判断するためにも使用できます。 const util = require('util') 定数arr1 = [1, 3, 5] 定数arr2 = [1, 3, 5] console.log('arr1 === arr2', arr1 === arr2) // false console.log('isDeepStrictEqual', util.isDeepStrictEqual(arr1, arr2)) // 真 エラーファーストと約束初期の Node API はすべて // 以下はファイルの読み取り例です。const fs = require('fs') fs.readFile('nginx.log', (エラー、データ) => { if (エラー) { // ファイルの読み取りに失敗しました console.error(error) 戻る } // ファイルを正常に読み取り、結果を出力します console.log(data) }) Node 8 がリリースされると、 定数 fs = require('fs') const util = require('util') const readFile = util.promisify(fs.readFile) ファイルの読み取り('./2021-11-11.log'、{エンコーディング: 'utf-8' }) .then(テキスト => console.log(テキスト)) .catch(エラー => console.error(エラー)) しかし、その後、多くの人が、これらのネイティブ API が Promise をサポートする方法は面倒すぎると感じ、各 API を個別の const fs = require('fs').promises fs.readFile('./2021-11-11.log', { エンコーディング: 'utf-8' }) .then(テキスト => console.log(テキスト)) .catch(エラー => console.error(エラー)) 注: Node 14 以降では、パッケージ名を変更してインポートするという、 const fs = require('fs/promises') fs.readFile('./2021-11-11.log', { エンコーディング: 'utf-8' }) .then(テキスト => console.log(テキスト)) .catch(エラー => console.error(エラー)) 次に、 const fs = require('fs/promises') const util = require('util') const readFile = util.callbackify(fs.readFile) readFile('./2021-11-12.log', { エンコーディング: 'utf-8' }, (エラー、テキスト) => { if (エラー) { コンソール.エラー(エラー) 戻る } console.log(テキスト) }) デバッグと出力Node サービスを開発している場合は、コンソールでより明確なデバッグ情報を確認できる const デバッグ = require('デバッグ') 定数ログ = デバッグ('app') const ユーザー = { 名前: 'shenfq' } log('現在のユーザー: %o', ユーザー) 実際、 const デバッグ = require('デバッグ') 定数ログ = デバッグ('app') const ユーザー = { 名前: 'shenfq' } log('現在のユーザー: %o', ユーザー) 起動時に 上記のコードをよく見ると、 const { format } = require('util') コンソール.log( format('現在のユーザー: %o', { 名前: 'shenfq'、年齢: 25 }) )
JavaScript のオブジェクトは非常に複雑です。 const { 検査 } = require('util') 定数ユーザー = { 年齢: 25歳 名前: 'shenfq', 仕事: 名前: 'コーディング', 勤続年数: 5 } } console.log(検査(ユーザー)) どうやら、 もちろん、上記は設定の一部にすぎません。より詳細な設定については、ノードのドキュメントを参照してください。以下にいくつか例を挙げてみましょう。 すべてのプロパティは改行内に表示されます。 検査(ユーザー、{ コンパクト: false }) オブジェクトの最初のレベルの値のみをフォーマットします。 検査(ユーザー、{ 深さ: 0, コンパクト: false }) キー値のエンコードに従って逆順に出力します。 検査(ユーザー、{ コンパクト: false、 ソート済み: (a, b) => a < b ? 1 : -1 }) 上記は、node.js の Util モジュールのチュートリアル例の詳細内容です。node.js の Util モジュールの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: ページを更新せずにフォームを送信するには iframe を使用します
序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...
目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...
概要プロトタイプ パターンは、プロトタイプ インスタンスによって作成されるオブジェクトの型を指し、こ...
0x0 はじめにまず、ハッシュアルゴリズムとは何でしょうか?メッセージやセッション項目など、一部のデ...
1. MySQLイメージを取得する docker pull mysql:5.6注: mysql5.7...
導入Ubuntu のデフォルトのソースは国内サーバーではないため、更新されたソフトウェアのダウンロー...
最初のステップは、Python のバージョン番号とインストール パスを確認することです。 上記のビュ...
BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...
タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...
この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...
この記事の例では、Vue がデジタル 3 桁区切り形式をグローバルに実装するための具体的なコードを参...
概要: 2 つの MySQL SQL ステートメント ロックの分析次のSQL文にどのようなロックが追...
目次1. ノードをインストールする2. Commander.jsをインストールする3. JavaSc...
目次序文記述子getとsetの詳細な説明オブジェクトの属性の乗っ取りオブジェクトのすべてのプロパティ...
目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...