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

推薦する

MySQLデータベースがNULLを可能な限り避ける理由

MySQL の多くのテーブルには、NULL が列のデフォルト属性であるため、アプリケーションが NU...

Dockerfile に基づいて Tomcat イメージを構築する方法

Dockerfile は Docker イメージを構築するために使用されるファイルです。コマンドパラ...

ドメイン名、ポート、IPに基づいてnginx仮想ホストを構築する

nginxでサポートされている仮想ホストには3つの種類があります1. ドメイン名ベースの仮想ホスティ...

MySQL メモリテーブルと一時テーブルの使用方法の詳細な説明

MySQL メモリ テーブルと一時テーブルの使用メモリテーブル: セッション 1 $ mysql -...

マインスイーパゲームを実装するための jQuery プラグイン (1)

この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...

MySQL デッドロック シナリオ例の分析

序文最近、MySQL で RR レベルでデッドロック問題に遭遇しました。興味深いと思ったので、調べて...

Tomcat が IDEA のコンソールで文字化けを起こし、IDEA エンコーディングを UTF-8 に設定する方法

1. まず、TomcatログのエンコーディングとIdeaログ表示コンソールのエンコーディングを区別す...

Windows 7 で MySQL 8.0.16 をインストールして使用する場合、パスワードの変更と Navicat への接続に関する問題が発生する

MySQL のインストール時にいくつかの問題が発生しました。オンラインで見つけた回答は似たようなもの...

CSS3 における擬似クラスの一般的な使用法の詳細な説明

before/after 疑似クラスは、要素内に 2 つの追加タグを挿入するのと同じです。最も適した...

DockerにMinIOをインストールするための詳細な手順

目次1. docker環境が正常かどうかを確認する2. miniIOイメージをダウンロードする3. ...

Linux\Nginx 環境での仮想ドメイン名の設定とテスト検証

Nginx 仮想ドメイン名設定を使用すると、ドメイン名を購入せずに特定のドメイン名を介してローカル ...

JavaScriptクロージャの原理と機能の詳細な説明

目次導入クロージャの使用カレー作りパブリック変数の実装キャッシュカプセル化(属性のプライベート化)閉...

Linux システムで Tomcat のポート 80 を使用する方法

アプリケーションシナリオ多くの場合、Linux サーバーに tomcat や nginx などのソフ...

MySQLデータベース設計:Pythonを使ったスキーマ操作方法の詳しい解説

矢が放たれる前に、弓は矢にささやきました。「お前の自由は私のものだ。」スキーマは矢のようなもので、弓...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...