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 環境での Jmeter の分散操作に関する詳細なチュートリアル

1. jmeterの基本イメージを構築するDockerfile は次のとおりです。 # Java 8...

bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

SSHPASSをインストールする最新のオペレーティング システムでは、sshpass パッケージはデ...

HTML ハイパーリンクの詳細な説明

ハイパーリンクハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間...

VueはTeleportをベースにModalコンポーネントを実装します

目次1. テレポートについて知る2. テレポートの基本的な使い方3. 最初のステップの最適化4. 第...

MySql でリモート接続を許可する方法

MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...

クロスブラウザ開発体験のまとめ(I)HTMLタグ

ページにDOCTYPEを追加するブラウザによってタグやスタイルシートの解釈が異なるため、さまざまなブ...

MySQL マルチテーブルクエリの詳細な説明

よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単では...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

HTML 要素 noscript の使用の紹介

noscript の定義と使用法noscript 要素は、スクリプトが実行されない場合の代替コンテン...

DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

目次CentOS 8にDockerをインストールする1. yumを更新する2. containerd...

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

Vueはコンピュータカメラを呼び出して写真機能を実現します

この記事の例では、コンピュータカメラを呼び出して写真機能を実現するためのvueの具体的なコードを参考...

HBuilderX で Tomcat 外部サーバーを設定して、JSP インターフェイスを表示および編集する方法の詳細な説明

1. 最初の方法は、ローカルのTomcatを起動してJSPを表示することです。 tomcatのweb...