2016-09-12 12 views
-3

JavaScriptを学習していますが、私が読んでいるJSコードの記述スタイルが分かりません。私は "古い"方法を知っていますが、私はこのスタイルをJS関数を作成して呼び出す方法について説明されているマニュアルは見つかりませんでした。 "新しい道":JavaScriptの高度な機能の呼び出し

// object 
var dog = { 
    color: 'brown', 
    size: 'big' 
}; 

//function to write dog size 
(function(dog) { 
    return dog.size; 
})(dog); 

私が知っているJavaScriptのマニュアル(古い方法)から:

function prinSize(dog) { 
    return dog.size 
} 
console.log(prinSize(dog)); 

私になぜ

  • 説明されているJSドキュメントへのリンクを送ることができます関数の宣言後に可能なのはなぜですか?JSコードでは、関数ブラケットの始まりと終わりです。

  • と儀式ブラケット。(犬)、これであなたは、実際の引数で関数を呼び出します。 、これは、その後すぐに、次の()でそれを実行し、1を返す関数を定義しているん何

    (function() { return 1; })() 
    

+0

ここには何も新しいものはありません。 – baao

+0

あなたがやっていることは、「古い方法」と「新しい方法」ではありません。あなたは今までどおり同じ機能を書いています。その最初のものは[即座に呼び出される関数式(IIFE)]です(https://developer.mozilla。org/en-US/docs/Glossary/IIFE)、すぐに実行される関数です。 –

+0

最初のコードは何もしません。 – JJJ

答えて

2

は、このよりよく理解番号1を書くための別の方法を検討するために、したがって、全体が1と評価されます。

もちろん、これを行う理由はありません。1と書いてあるだけです。

ので1+2を行うには、私は(それだけで表現することができどこが構文的位置にあるので、私は、第二の機能を括弧で囲む必要はありません。)

(function() { return 1; })() + function() { return 1; }() 

書くことができ

同じ意味で

、あなたの関数

(function(dog) { return dog.size; })(dog) 

はちょうど012を書くことに全く同じですで始まります。私はあなたがこれを見た場所を知らないが、それ自身の上に立って、それは2つの方法でばかげている:まず、dog.sizeと同じであると言ったように、そして次に、 -to実際の結果との何かを、あなたは

var size = function(dog) { return dog.size; }(); 

が、再びを記述する必要があると思い、あなたにもちょうど

var size = dog.size; 

は、正当な理由の多くは、これらのいわゆる使用することがあります書くかもしれません"IIFEs"、またはすぐに呼び出される関数式(その中に情報を隠すことを含む)が含まれますが、これはそれらの1つではありません。

+0

説明をありがとう、私はIIFEについて聞いたことがない。 –

関連する問題