2017-01-31 7 views
-1

グローバル変数を作成せずに、関数のカウントを呼び出すたびに1つの数値(1)を返します。毎回計算を行うために、1ずつ増やします。この例では、それがない1 2 3、、それはまた、あなたはtoStringメソッドオーバーライドしたいことがあり関数が期待以上に返す

function() { 
    x++ 
    return x; 
} 

function counter() { 
 
    var x = 0; 
 
    return function() { 
 
    x++ 
 
    return x; 
 
    } 
 
} 
 

 
var count = counter(); 
 

 
console.log('counter() returns: ' + count); 
 
console.log('invoking the function returns: ' + count()); 
 
console.log('invoking the function returns: ' + count()); 
 
console.log('invoking the function returns: ' + count());

+2

はい、関数を呼び出さずにその関数を印刷しようとすると、関数自体のコードが(通常は)表示されます。最初のconsole.log行が代わりに何を印刷すると思いますか? – JJJ

+1

'count'があなたがそれを言い出すたびに新しい番号を魔法のように返すようにするには、***を使わずに'() '...を使って*呼び出す必要がありますか? – deceze

+0

あなたはすでにグローバル変数 'var count'を作成しています – brigysl

答えて

-2

返します

012あなたは、文字列、それをログに記録するのいずれかの谷、または谷数+「」として出力する機能を試してみたときに動作します

http://jsbin.com/lenigadoqe/edit?console

。しかし、それは必ずしもそうではありませんので、あなたはgetters/setterを見るかもしれません。

+0

@downvoters:申し訳ありませんが誤解された質問 –

+1

編集を参照してください問題:値は常に文字列コンテキスト*で使用されます。これはこのデモで動作しますが、 'arr.push(count)'やその他の用途はどうでしょうか? – deceze

+0

@deceze:はい、メモを追加しました... –

関連する問題