JavaScript 匿名関数とそのコード パターンの原則_JavaScript スキル

WBOY
リリース: 2016-05-16 18:31:55
オリジナル
1080 人が閲覧しました

この記事では、匿名関数とは何か、またそれがもたらす利点については詳しく説明しません。まず、一般的に使用される匿名関数を取り上げます。
(function(){alert('yo')})()
Many Studentsこの種の無名関数の使い方は知っていますが、なぜこのように書くことで無名関数を呼び出せるのかは理解できないかもしれません。おそらく、次の括弧が前の関数を実行することは知っていても、その前の括弧が何を意味するかは知りません。この記事では、匿名関数のコード パターンの原則を理解します。
OK、まずは匿名関数呼び出しパターンを見てみましょう:

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

(function(){alert(1);}())
(function(){alert(2);})()
void function(){alert( 3);}( )

上記の 3 つは正しく、機能的には同等です。
間違った書き方を見てみましょう:
4.
function(){alert('yo')}()
上記のコードは構文エラーをスローします。これはなぜですか?この質問について、Qin Ge 氏の回答を見てみましょう。
1. 関数リテラル: まず関数オブジェクトを宣言してから、それを実行します。
2. 優先順位式: Javascript は括弧の内側から外側に向かって式を実行するため、括弧を使用して宣言された関数を強制的に実行できます。
3.void 演算子: void 演算子を使用して、かっこで囲まれていない単一のオペランドを実行します。
答えが正しいかどうかに関係なく、これらを脇に置いて、関数宣言の構文と関数式の構文を見てみましょう。
1. 関数宣言:
コードをコピー コードは次のとおりです:

関数名([param[, param[, ... param]]] ) {
statements
}

ここでの関数名 name は省略できません。関数名を省略した場合はエラーとなります。
これは、
function(){alert('yo')}
を直接書くとエラーが発生する理由も合理的に説明しています。コンパイラはこれを関数宣言として扱い、関数名がコードに現れないため、結果は予測可能です。
2. 関数式:
コードをコピーします。 コードは次のとおりです:

関数[name ]([param] [, param] [..., param]) {
statements
}

関数名 name は省略可能です。 - 匿名関数と呼ばれます。明確にするために: 匿名関数を作成する必要がある場合は、関数の明示的な宣言ではなく関数式を指定する必要があります
これで、より正確な説明ができるようになります:
123 匿名関数のコード パターンは、以下にすぎません。括弧または void は、function(){} を関数式として解釈するようにコンパイラーに指示します。優先順位や無効演算子のような複雑な原則はありません。これは単純な構文変換にすぎません。
ご想像のとおり、関数式の構文に準拠している限り、
コピー コード コードは次のとおりです。
!!function(){
alert('yo')
}()
function(); {
alert(' yo');
}()

これ以上の謎はありません。関数宣言と関数の違いだけです。表現を理解していない場合は、物事を考えすぎて複雑にしすぎている可能性があります。
現在、JavaScript を学習するための特別な専門トレーニングやコースは用意されていません。コーディング能力の向上は、あなた自身の日々の実践と蓄積にかかっています。ただし、これが頻繁に発生するほど、最も基本的な知識が無視され、単純な問題が複雑になる可能性が高くなります。これはお勧めできません。 JavaScript を詳しく説明せずに、「使える」という態度で学習する学生もいますが、実際には、その能力はあまり向上しません。望ましくない!
詳細情報:

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