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

推薦する

Docker+keepalived+nginx を使用してマスタースレーブホットスタンバイを実装する方法の例

序文単一障害点を解決するには、マスター/スレーブ ホット スタンバイ ソリューションを構成する必要が...

Windows 10 で MySQL を完全に削除してアンインストールする方法

序文この記事では、Windows 10 システムで MySQL を完全に削除してアンインストールする...

過去2年間のユーザーエクスペリエンス

<br />国内のウェブサイトが本格的に普及し、ユーザーエクスペリエンスに重点が置かれる...

初心者向けのHTMLタグネストルールの詳細なまとめ

最近、HTML を再度学習しており、これは HTML に対する新たな理解と言えます。これを過小評価し...

MySQL パーティションテーブルの正しい使用方法

MySQL パーティションテーブルの概要数億、あるいは数十億ものレコードを格納するテーブルに遭遇する...

Chrome デベロッパー ツールの詳細な紹介 - タイムライン

1. 概要ユーザーは、アクセスする Web アプリケーションがインタラクティブでスムーズに実行される...

初心者向けウェブサイト構築チュートリアル: 10 日間でウェブサイトの構築方法を学ぶ

10 日間のチュートリアルでは、最も理解しやすい言語を使用し、最も基本的なことから始めて、誰もが W...

CSS を使用して小さな画像をプルダウンし、大きな画像と情報を表示する方法

今日は、Taobao、JD.comなどのショッピングモールでよく使われている、小さな画像の上にマウス...

MySQLのlike演算子の詳細

1. はじめに不明な値または部分的に既知の値をフィルタリングする場合は、like 演算子を使用でき...

Linux のソフトリンクとハードリンクの詳細な説明

目次1. ファイルとディレクトリの基本的な保存2. Inコマンドの紹介(1)lnコマンドの基本情報を...

MySQLはテーブル内のフィールドを別のテーブル内のフィールドの値と等しくなるように更新します

以下のように表示されます。 table1 を z として更新し、table2 を zb として結合し...

CSS3 マウスホバー遷移ズーム効果

以下は、純粋な CSS で記述された画像マウスホバーズーム効果です。実際、基本原理は非常に単純です。...

Web 開発の面接と筆記試験に必須の知識(必読)

HTML のインライン要素とブロックレベル要素の違い:標準的なドキュメント フローでは、ブロック ...

mysql8.0.23 msi インストールの超詳細なチュートリアル

1.MySqlをダウンロードしてインストールする公式ウェブサイトからMySqlデータベースをダウンロ...

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

目次mysql フィルター レプリケーションメインデータベースに実装ライブラリから実装いくつかの質問...