コンソールで JavaScript 変数を宣言すると「未定義」になるのはなぜですか?

Susan Sarandon
リリース: 2024-10-20 08:43:30
オリジナル
586 人が閲覧しました

Why Does Declaring JavaScript Variables at the Console Result in

コンソールで JavaScript 変数を宣言すると、コンソール出力が「未定義」になるのはなぜですか?

var a; を使用してコンソールで JavaScript 変数を宣言すると、 、コンソールに「未定義」と表示されるため、困惑するかもしれません。ただし、この動作は、単に宣言ステートメントに初期化子が存在しないことが原因ではありません。

実際の理由: Eval ステートメント

この動作の背後にある理由は、 eval ステートメントの仕組み。式またはステートメントを評価するとき、eval ステートメントはその結果を解釈します。ただし、結果が値の場合、eval はその値を返します。それ以外の場合、結果が空の場合 (var a; の場合と同様)、eval は未定義を返します。

式としての変数宣言

興味深いことに、JavaScript は var を扱います。 a;宣言ステートメントをステートメントではなく式として使用します。これは、結果が空であることを意味します。したがって、var a; の場合、がコンソールで処理されると、eval ステートメントは空の結果を効果的に解釈し、未定義を返し、コンソールに出力されます。

無視された宣言

場合によっては、空ではない結果を含むステートメントがある場合、後続の変数および関数の宣言はコンソールによって無視される場合があります。例:

var a = 3;
undefined

var a = 3; a = 4;
4

var a = 3; a = 4; var a = 5; function f() {};
4
ログイン後にコピー

これは、空でない結果が見つかると SourceElements (宣言を含む) の評価が停止し、ステートメントの空の結果の代わりにそのステートメントの結果が出力されるためです。

関数宣言と式

関数の宣言と式では、もう 1 つの微妙な違いが生じます。 function f() {} を使用して関数を宣言すると、その関数は関数宣言ステートメントとして扱われ、空の結果が返され、コンソールに「未定義」と表示されます。ただし、関数が (function f() {}) を使用して定義されている場合、その関数は関数式として扱われ、関数自体に評価され、そのようにコンソールに出力されます。

以上がコンソールで JavaScript 変数を宣言すると「未定義」になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!