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 つの簡単な方法

推薦する

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

MySQL は、元のデータと同じデータがある場合、更新ステートメントを再度実行しますか?

背景この記事では主に、MySQL が更新ステートメントを実行するときに、元のデータと同一の (つまり...

sshとは何ですか?使い方は?どのような誤解があるのでしょうか?

目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...

vite を使用して vue3 アプリケーションを構築する方法

1. インストールヒント: 現在、VUE3.0 の公式翻訳ドキュメントはありません。しかし、すでに誰...

CentOS7でXShellとネットワーク設定を接続する方法

1. Linuxネットワーク構成ネットワークを構成する前に、まずローカル IPv4 アドレスやデフォ...

MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう

目次序文SQL文の最適化遅いクエリSQLを記録する設定を変更する方法スロークエリログを表示するSQL...

Tomcatの全体構造の簡単な紹介

Tomcat は Web コンテナとして広く知られています。Java を学び始めたときから現在の仕事...

MySQL マルチテーブルクエリ例の詳しい解説 [リンククエリ、サブクエリなど]

この記事では、例を挙げて MySQL のマルチテーブル クエリについて説明します。ご参考までに、詳細...

Dockerはローカルイメージをパッケージ化し、他のマシンに復元します

1. docker imagesを使用して、このマシン上のすべてのイメージファイルを表示します。 2...

練習と面接のための Linux シェル スクリプトのヒント 9 つを共有する

予防1) 先頭にインタープリターを追加します: #!/bin/bash 2) 構文のインデントに 4...

Vue 3.0 カスタムディレクティブの使い方

目次1. カスタム指示1. グローバルカスタム指示を登録する2. グローバルカスタム指示を使用する3...

判定条件を使用してCSSファイルをインポートする

解決策 1: HEAD に次のコードを挿入するなど、HTML ドキュメントで条件付きインポートを使用...

Vueは単純なランダムロールコールを実行します

目次レイアウト部分: <div id="アプリ"> <p>...

CSS エクスペリエンスを充実させる 5 つの便利な CSS セレクターを紹介します

Web デザイナーとして豊富な CSS 経験を持つ私たちは、あらゆる種類のコード構文、互換性、スニペ...

vscode で console.log を書く 2 つの簡単な方法の詳細な説明

(I) 方法 1: 事前にスクリプト タグ内に直接定義します。この HTML ファイルにのみ適用され...