ホームページ ウェブフロントエンド jsチュートリアル JavaScript 関数宣言と関数式の違いの紹介_JavaScript スキル

JavaScript 関数宣言と関数式の違いの紹介_JavaScript スキル

May 16, 2016 pm 05:20 PM
関数宣言

同じように、コードから始めます:

コードをコピーします コードは次のとおりです:

<スクリプト>
var f = function g() {
return 1;
if (false) {
f = function g(){
return 2 ;
};
}
alert(g()); // 2


このコードを IE 6 に入力すると、次のようになります。 Chrome とはまったく異なります。

ここでの出力 2 は ie6 での効果です。Chrome の場合、g が定義されていないように見えます。

これは JScript のバグと考えられます。

ここにあるのは g を定義する関数式にすぎないことは明らかです。 if 条件文には関数式のみが定義されており、関数は宣言されていません。

それでは、そのような直接アクセスは間違いなく間違っています。

では、ステートメントとは何で、関数式とは何でしょうか?

ECMAScript では、関数を作成する 2 つの最も一般的な方法は、関数式と関数宣言です。ECMA 仕様では、関数宣言には ( を付ける必要がある) という 1 つの点だけが明確にされているため、この 2 つの違いは少しわかりにくいです。
関数宣言:
関数 関数名 (パラメーター: オプション) {関数本体}
関数式:
Function 関数名 (オプション) (パラメータ: オプション) {関数本体}

したがって、関数名が宣言されていない場合は式でなければならないことがわかりますが、If関数名が宣言されていますが、それが関数宣言なのか関数式なのかを判断するにはどうすればよいですか? ECMAScript はコンテキストによって区別されます。関数 foo(){} が代入式の一部である場合、関数 foo(){} が関数本体内に含まれている場合、またはプログラムの先頭にある場合、それは関数式です。関数宣言。

括弧で囲まれた関数式 (function foo(){}) というあまり一般的ではない関数式もあります。これが式である理由は、括弧 () がグループ化演算子であるためです。内部には式のみを含めることができます。

eval を使用して JSON を実行する場合、通常、JSON 文字列は eval('(' json ')') のように括弧で囲まれていると思われるかもしれません。その理由は、グループ化演算子であるためです。この括弧のペアにより、パーサーは JSON 中括弧をコード ブロックではなく式に解析するように強制されます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C++ 関数宣言のデフォルト パラメーター: それらの宣言と使用法の包括的な分析 C++ 関数宣言のデフォルト パラメーター: それらの宣言と使用法の包括的な分析 May 02, 2024 pm 03:09 PM

C++ のデフォルト パラメーターは、関数パラメーターのデフォルト値を指定する機能を提供するため、コードの読みやすさ、単純さ、柔軟性が向上します。デフォルトのパラメータを宣言する: 関数宣言のパラメータの後に「=」記号を追加し、その後にデフォルト値を追加します。使用法: 関数が呼び出されるとき、オプションのパラメーターが指定されていない場合は、デフォルト値が使用されます。実際のケース: 2 つの数値の合計を計算する関数。1 つのパラメーターは必須で、もう 1 つはオプションであり、デフォルト値は 0 です。利点: 可読性の向上、柔軟性の向上、定型コードの削減。注: これは宣言でのみ指定でき、最後に指定する必要があり、型に互換性がある必要があります。

C++ 関数の宣言と定義の順序はどのような影響を与えますか? C++ 関数の宣言と定義の順序はどのような影響を与えますか? Apr 19, 2024 pm 01:42 PM

C++ では、関数の宣言と定義の順序がコンパイルとリンクのプロセスに影響します。最も一般的なのは、宣言が最初にあり、定義が後に来ることです。「forwarddeclaration」を使用して、定義を宣言の前に置くこともできます。両方が同時に存在する場合、コンパイラは宣言を無視し、定義のみを使用します。

C++ 関数の宣言と定義の違いは何ですか? C++ 関数の宣言と定義の違いは何ですか? Apr 18, 2024 pm 04:03 PM

関数宣言はコンパイラに関数の存在を通知しますが、型チェックに使用される実装は含まれません。関数定義は、関数本体を含む実際の実装を提供します。主な特徴には、目的、場所、役割が含まれます。違いを理解することは、効率的で保守可能な C++ コードを作成するために重要です。

C++ 関数の宣言と定義 C++ 関数の宣言と定義 Apr 11, 2024 pm 01:27 PM

C++ では関数の宣言と定義が必要です。関数宣言には関数の戻り値の型、名前、パラメーターが指定され、関数定義には関数の本体と実装が含まれます。まず関数を宣言し、それをプログラム内で使用して必要なパラメータを渡します。 return ステートメントを使用して、関数から値を返します。

C++ コンパイル エラー: 関数呼び出しが関数宣言と一致しません。解決方法は? C++ コンパイル エラー: 関数呼び出しが関数宣言と一致しません。解決方法は? Aug 22, 2023 pm 12:39 PM

C++ コンパイル エラー: 関数呼び出しが関数宣言と一致しません。解決方法は? C++ プログラムを開発する場合、必ずコンパイル エラーが発生します。一般的なエラーの 1 つは、関数呼び出しが関数宣言と一致しないことです。この種のエラーは C++ プログラマの間で広く存在しており、関数宣言の正確さに注意を払わないためにコンパイルの問題が発生し、最終的には問題の解決に時間と労力を浪費し、開発効率に影響を及ぼします。この間違いを回避するには、いくつかの規範と標準的な慣行に従う必要があります。以下でそれらを見てみましょう。関数呼び出しと関数宣言とは何ですか?

C++ 関数宣言の [[nodiscard]]: 戻り値を無視した場合の結果をわかりやすく説明する C++ 関数宣言の [[nodiscard]]: 戻り値を無視した場合の結果をわかりやすく説明する May 01, 2024 pm 06:18 PM

[[nodiscard]] 属性は、関数の戻り値を無視してはならないことを示します。無視しないと、初期化されていない例外、メモリ リーク、不正な計算結果などの結果を防ぐためにコンパイラの警告またはエラーが発生します。

C++関数宣言の詳細構文:構文解析から標準的な使用法解析まで C++関数宣言の詳細構文:構文解析から標準的な使用法解析まで Apr 30, 2024 pm 02:54 PM

C++ 関数宣言の構文は次のとおりです: returnTypefunctionName(parameterType1parameterName1,...,parameterTypeNparameterNameN); ここで、returnType は戻り値の型、functionName は関数名、parameterType はパラメータの型、parameterName はパラメータ名であり、末尾は次のとおりです。セミコロン。

C++ 関数宣言のステップバイステップ ガイド: すべてのステップをカバーする詳細な手順 C++ 関数宣言のステップバイステップ ガイド: すべてのステップをカバーする詳細な手順 May 02, 2024 pm 04:33 PM

関数宣言は、関数本体を提供せずに関数が存在することをコンパイラに伝えます。手順は次のとおりです。 関数の戻り値の型を指定します(戻り値がない場合は void)。 関数名を定義し、関数パラメータ(オプション、データ型と識別子を含む)とセミコロンを宣言します。

See all articles