JavaScript_javascript テクニックにおけるプリミティブ データ型 Null および Unknown の詳細な説明
JavaScript のプリミティブ データ型について議論するとき、ほとんどの人は文字列、数値、ブール値までの基本を知っています。これらのプリミティブ型は非常に単純で、常識のように動作します。ただし、この記事では、ユニークなプリミティブ データ型である Null と Unknown、およびそれらが非常に似ていながらも矛盾している理由に焦点を当てます。
1. Null と未定義について理解する
JavaScript では、null は言語のリテラルおよびキーワードであり、認識できないオブジェクト値を表すために使用されます。つまり「価値がない」という意味で使われます。似ていますが、未定義は実際には値が存在しないことを表します。これらは完全に不変であり、プロパティやメソッドを持たず、プロパティに値を割り当てることもできません。実際、プロパティにアクセスまたは定義しようとすると、TypeError が発生します。名前が示すように、これらは完全に無効な値です。
値なしで表されるブール値は false です。これは、if ステートメントなどの条件付きコンテキストで false と評価されることを意味します。等価演算子 (==) を使用して、これら 2 つの値を他の false 値と比較します。それらは、それ自体を除いて等しくありません:
null == 0; // false undefined == ""; // false null == false; // false undefined == false; // false null == undefined; // true
ただし、その他の類似点として、null と unknown は同等ではありません。それぞれは独自の型の一意のメンバーであり、unknown は未定義型、null は Null 型です。以下に示すように、型と値の両方が等しい必要がある等価演算子 (===) を使用して、これら 2 つの値を比較します。
undefined === null; // false
2. 未定義を生成
未定義の値を含むコードを生成するには、さまざまな方法があります。通常、存在しない値にアクセスしようとしたときに発生します。この場合、JavaScript のような動的で型付けが弱い言語では、エラーが発生するのではなく、デフォルトで未定義の値が返されます。
初期値なしで宣言された変数は、デフォルト値が未定義になります:
var foo; // 默认值为 undefined
var array = [1, 2, 3]; var foo = array.foo; // foo 属性不存在, 返回 undefined var item = array[5]; // 数组中没有索引为5的项,返回 undefined
var value = (function(){})(); // 返回 undefined
(function(undefined){ // 参数是 undefined })();
function isUndefined(obj){ return obj === void 0; }
'undefined' in window; // true
3. Null の使用例
null の使用例は、null を異なるものにする主な側面です。未定義とは異なり、null はより便利であると考えられているからです。 typeof 演算子が null 値に適用されると「object」を返すのはこのためです。元の理論的根拠は、プレースホルダーと同様に、null オブジェクトが予期されるため、null 参照が通常使用されるというものであり、現在でもそうです。 typeof のこの動作はバグとして確認されており、修正が提案されましたが、下位互換性のために変更されていません。
このため、JavaScript 環境では値を null に設定することはなく、プログラムで行う必要があります。 MDN のドキュメントには次のように書かれています:
API では、オブジェクトが取得される場所で null が予期されることがよくありますが、関連するオブジェクトはありません。
これは、言語に依存せず、ECMAScript 仕様の範囲外である DOM に適用されます。これは外部 API であるため、存在しない要素を取得しようとすると、未定義ではなく null 値が返されます。
一般に、不変の値を変数またはプロパティに割り当てる必要がある場合、それを関数に渡す必要がある場合、または関数から null を返す必要がある場合は、ほとんどの場合、null が最良の選択です。要するに、JavaScript は unfineed を使用し、プログラマは null を使用する必要があります。
null のもう 1 つの使用例は、参照が必要なくなったときに、変数を無効 (object= null) として明示的に指定することです。 Null 値を割り当てることにより、参照は実質的にクリアされ、オブジェクトが他のコードによって参照されていないことを前提として、メモリが確実に再利用されるようにガベージ コレクションが指定されます。
4. さらに深く掘り下げる
null と unknown をブラック ホールのようにしているのは、その動作だけではなく、JavaScript 環境内での内部的な処理方法にもあります。多くの場合、それらは他のネイティブ オブジェクトや組み込みオブジェクトと同じ関連特性を持っていないように見えます。
ES5 では、Object.prototype.toString メソッドが事実上の型チェック標準となり、null および未定義との一貫性が証明されています。
然而,Object.prototype.toString方法其實並不是檢索null的內部[[Class]]屬性或undefined的公開建構子。根據文檔,以下步驟發生在被調用過程中:
如果值是undefined,則回傳「[object Undefined]」。
- 如果這個值為null,則回傳「[object Null]」。
- 讓O作為呼叫ToObject同時傳遞this值作為參數的結果值。
- 讓class是O的內部屬性[[Class]]的值。
- 傳回的結果連接三個字串“[object ”,class,和“]”的結果的字串值。
該方法執行一個簡單的字串回傳值,如果它偵測到null或undefined和其他物件統一的功能。在整個規範中這是很常見的,因為當遇到null和undefined值時大多數方法包含一個簡單的捕捉並傳回。事實上,沒有跡象表明他們包含與任何原生物件相關聯的內部屬性。就好像他們不是對象。我很想知道如果一個JavaScript的原生環境內部實際存在的明確方案會怎麼樣?也許有人更熟悉一個可以參與的實現。
結論
無論這些原生物件多麼不尋常,理解null和undefined之間的差異,和他們在JavaScript的語言基礎中截然不同的角色。它可能不能使你的應用程式有所突破,但是一般來說,它僅被證明在開發和調試中長期有益。
以上就是針對javascript中原始資料類型Null和Undefined進行的介紹,希望對大家的學習有所幫助。

Javaandjavascriptaredistinctlanguages:javaisusedforenterpriseandmobileapps、whilejavascriptisforinteractivewebpages.1)javaiscompiled、staticatically、andrunsonjvm.2)javascriptisisterted、dynamsornoded.3)

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

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