2017-06-02 8 views
0

誰かが私に言いますが、javascriptで関数をvarに宣言して、同じexperession(プログラム行)で実行できますか?var内で自己実行する関数

var tmp = 0, 
a = function() { 
    ++tmp; /*rest of code*/ 
}; 
a(); 
console.log(tmp); 
+1

これをコンソールに貼り付けるとどうなりますか?それは動作しますか? – putvande

+1

あなたはそれを試しましたか? – doutriforce

+0

私は1を持っています。私は2を取得したい:関数の初期化でインクリメントを1回、関数の次の呼び出しを実行する – Kamczatka

答えて

1

関数宣言をparentesisで囲むと、式が得られます。 assigmentは式でもあり(割り当てられた値として評価されます)、この事実を利用して結果を得ることができます。

var tmp = 0, a; 
 
(a = function() { ++tmp;})(); 
 
a(); 
 
console.log(tmp);

私には、私はこのようなコードを読み取るために持って好きではないだろう、と述べました。それは間違いや誤解を生じやすい。

+0

恐ろしいコード:+1 – Bergi

関連する問題