JavaScriptの信頼性の低い未定義

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は、通常次のように記述します。

if(a === undefined){ //コード}

ただし、JavaScript の undefined は信頼できません。次のような関数を書いてみます。

関数テスト(a) {
  var 未定義 = 1;
  console.log(未定義); // => 1
  if(a === 未定義) {
    // ...
  }
}

ご覧のとおり、undefined は簡単に 1 に変更されるため、その後の undefined の理解が曖昧になります。したがって、JavaScript では、識別子が改ざんされる可能性があるため、 undefined を「undefined」として直接解釈するのは危険です。

ES5 より前では、グローバル undefined も変更できます。ES5 では、この識別子は読み取り専用識別子として設計されています。現在使用しているブラウザがそれほど古くない場合は、コンソールに次のステートメントを入力してテストできます。

未定義 = 1;
console.log(未定義); // => 未定義

これで、識別子 undefined が実際には「未定義」を反映していないことがはっきりとわかるので、他の手段でこのセマンティクスを取得する必要があります。幸いなことに、JavaScript には void 演算子も用意されており、指定された式を評価して、信頼できる undefined を返します。

void式

最も一般的な使用法は、次の操作を通じて undefined を取得することです。式が 0 の場合、操作コストは最小になります。

無効 0;
// または
void(0);

undefinedが必要な場所はすべてvoid 0に置き換えられます

もちろん、undefined を取得する別の方法もあります。jQuery のソース コードを読んだことがある人なら、その中ですぐに実行される関数を知っているはずです。

(関数(ウィンドウ、未定義) {
    // ...
})(ウィンドウ)

この関数では、2 番目のパラメータを渡していない (パラメータ名が undefined) ため、2 番目のパラメータの値は「undefined」とみなされます。したがって、この方法では、この関数のスコープ内のすべての undefined は undefined として信頼されます。

以上がJavaScriptの信頼できないundefinedの詳細です。JavaScriptの信頼できないundefinedの詳細については、123WORDPRESS.COMの他の関連記事に注目してください!

以下もご興味があるかもしれません:
  • 未定義の JavaScript 値を処理する 7 つのヒント
  • JavaScript の未定義と null の相違例の分析
  • JavaScript における null と undefined の使用法の分析
  • JavaScript における undefined の本質
  • JS Chrome ブラウザの showModalDialog 関数の戻り値が未定義になる問題の解決方法
  • Javascript 型システムにおける undefined と null の簡単な分析
  • JavaScript 型システム - undefined と null の包括的な理解
  • Javascript の基礎_未定義値と null 値の簡単な比較
  • JavaScript で知っておくべきこと (パート 2) null と undefined
  • JavaScript における未定義型と null 型の区別

<<:  LinuxにMySQLをインストールし、外部ネットワークアクセスを構成する例

>>:  Ubuntu の空き容量を増やす 5 つの簡単な方法

推薦する

Vueドロップダウンメニューのコンポーネント開発の詳細説明

この記事の例では、Vueドロップダウンメニューのコンポーネント開発の具体的なコードを参考までに共有し...

nginxプロキシsocket.ioサービスの落とし穴の詳細な説明

目次Nginx は 2 つの socket.io サーバーをプロキシします。 socket.ioの動...

Docker ベースの Tomcat クラスタと Nginx ロード バランシングの展開の概要

目次前面に書かれた1. Ngixnイメージの作成2. Java Web (Tomcat) アプリケー...

Ubuntu 20.04でAliソースを変更する方法

なお、この記事では、単に 20.04 ソースに変更する方法を説明するのではなく、20.04 に基づい...

Vueは要素ツリーコントロールを通じてツリーテーブルを実装します

目次実装効果図依存関係をインストールするカスタムツリーコントロールその他の実装要約するVueでは、要...

LinuxでVIMエディタを使う方法

豊富なオプションを備えた強力なエディターとして、Vim は多くのユーザーに愛されています。この記事で...

ElementUI の el-dropdown に複数のパラメータを実装する方法

最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...

MySQLのインデックス選択と最適化の詳細な説明

目次インデックスモデルB+ツリーインデックスの選択インデックスの最適化インデックスの選択性カバーイン...

MySQLがブール型を返すいくつかの状況について簡単に説明します。

mysqlはブール型を返します最初のケースでは、直接戻ります select id='22a...

ウェブサイトのユーザーエクスペリエンスデザイン(UE)

Google Reader で、JunChen が書いた「フロー理論と設計」というタイトルの投稿を見...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

iframeをカプセル化するvueコンポーネントを開発する

目次1. コンポーネントの紹介2. コンポーネントの内部構造とロジック1. コード組織構造2. マッ...

Alibaba Cloud イメージリポジトリを使用して外部 Docker イメージを構築する方法の詳細な説明

Alibaba Cloud Image Repositoryを使用して外部イメージをダウンロードする...

vue.jsは画像のURLに従って画像をダウンロードします

最近、フロントエンドの vue.js ドッキング機能モジュールに取り組んでいたとき、画像をダウンロー...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...