目次
条件文内の関数宣言
ホームページ ウェブフロントエンド jsチュートリアル JavaScriptの条件文内で関数を宣言できますか?

JavaScriptの条件文内で関数を宣言できますか?

Nov 01, 2024 pm 03:10 PM

Can You Declare Functions Inside Conditional Statements in JavaScript?

条件文内の関数宣言

JavaScript では、関数宣言は、一般的な言語標準と実行される環境に応じて異なる動作をします。

厳密モード (ES5)

ECMAScript 5 (ES5) で導入された厳密モードでは、条件ステートメント内での関数宣言は許可されません。これは、関数宣言によって、関数全体またはグローバル スコープにスコープされるホイスト変数が作成されるためです。これらを条件ステートメント内に配置すると、この巻き上げメカニズムが壊れます。

非厳密モード (ES5)

ただし、非厳密モードでは、関数宣言の動作が異なります。条件ステートメント内でのエラーは予測できませんでした。さまざまなブラウザーや JavaScript エンジンがこの状況に対処するための独自のルールを実装しており、一貫性のない結果が生じていました。

モダン JavaScript (ES2015) では

2018 年現在、ほとんどの最新ブラウザーはECMAScript 2015 (ES2015) をサポートします。これにより、ブロック内の関数宣言のより厳密な解釈が導入されました。 ES2015 では、関数宣言は、宣言されているブロックにスコープされます。

例:

次のコードを考えてみましょう:

<code class="javascript">var abc = '';
if (1 === 0) {
  function a() {
    abc = 7;
  }
} else if ('a' === 'a') {
  function a() {
    abc = 19;
  }
} else if ('foo' === 'bar') {
  function a() {
    abc = 'foo';
  }
}
a();
document.write(abc); //writes "foo" even though 'foo' !== 'bar'</code>
ログイン後にコピー

厳密モードまたは ES2015 では、関数 a がグローバル スコープで定義されていないため、このコードはエラーになります。ただし、非厳密モードでは、実装に応じて異なる出力が生成される可能性があります。この例では、Chrome は「foo」を出力し、Firefox は「19」を出力します。

推奨事項:

予期しない動作を避けるために、代わりに関数式を使用することをお勧めします。関数を条件付きで定義する場合の関数宣言の説明。関数式は、直接のスコープ内でのみアクセスできるスコープ付き関数を作成します。

以上がJavaScriptの条件文内で関数を宣言できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

例JSONファイルの例

10 jQuery構文蛍光物 10 jQuery構文蛍光物 Mar 02, 2025 am 12:32 AM

10 jQuery構文蛍光物

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

8見事なjQueryページレイアウトプラグイン

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

独自のAjax Webアプリケーションを構築します

&#x27; this&#x27; JavaScriptで? &#x27; this&#x27; JavaScriptで? Mar 04, 2025 am 01:15 AM

&#x27; this&#x27; JavaScriptで?

10 JavaScript&JQuery MVCチュートリアル 10 JavaScript&JQuery MVCチュートリアル Mar 02, 2025 am 01:16 AM

10 JavaScript&JQuery MVCチュートリアル

See all articles