javascript
1 var i=0; 2 function show (){ 3 console.log(i++); 4 } 5 setInterval(show(),1000); 6
というコードがあるのですが、
show()の部分が
①show()の場合
→コンソールログに0が表示
②showの場合
→コンソールログに0,1,2,...が表示
③"show()"の場合
コンソールログに0,1,2,...が表示
④"show"の場合
何も表示されない
これにはどういう違いがあるのですか??
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
func は繰り返し呼びたい関数です。
ということなので、「show()」ではなくfunctionオブジェクトである「show」を引数に渡します。
javascript
1var i=0; 2function show (name){ 3 console.log(i++); 4}; 5setInterval(show, 1000);
関数への引数渡しの方法はこんなのもありますよ。
javascript
1var i=0; 2function createShowFunc (name){ 3 return function() { 4 console.log(name); 5 console.log(i++); 6 }; 7}; 8setInterval(createShowFunc("hoge"), 1000);
投稿2017/06/14 01:56
総合スコア5572
0
ベストアンサー
setInterval の正確な仕様を把握していないため結構嘘だらけだと思いますが、
質問の意図的にはこういう回答でどうでしょう。
...
④"show"の場合
→何も表示されない
文字列 show が第一引数に指定している。
書式上許容しているが、関数を実行するわけでもないので何の意味もない。
...
①show()の場合
→コンソールログに0が表示
関数 show() の実行結果を第一引数に指定している。
show() が参照された時点で console.log(0) が実行されるが、
setInterval として正しくないため二度目以降の処理は繰り返されない。
...
②showの場合
→コンソールログに0,1,2,...が表示
関数 show の実体を第一引数に指定している。書式上許容しており問題なく動くみたい(そうなの?)
流行りの書き方で表すとこんな同じか。setInterval( function(){ ... } , 1000);
...
③"show()"の場合
コンソールログに0,1,2,...が表示
関数 setInterval に望ましい第一引数。
正しく動作する
投稿2017/06/28 08:01
総合スコア123
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
書かれているコードではエラーが出ます。
エラー無く書くにはこう。
JavaScript
1var i=0; 2function show (name){ 3 console.log(i++); 4}; 5setInterval(show(),1000);
で、1秒後から表示したければこう。
JavaScript
1var i=0; 2function show (name){ 3 console.log(i++); 4}; 5setInterval(show,1000); 6```**動くサンプル:**[https://jsfiddle.net/q76q6pzb/1/](https://jsfiddle.net/q76q6pzb/1/)
投稿2017/06/13 13:14
総合スコア69398
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
下記のエラー出ますね。ブラウザの開発ツールなどで確認すると良いです。
Uncaught SyntaxError: missing ) after argument list
転記ミスであれば仕方がないですが・・・
引数でname
を渡したいんでしょうかね?""
で関数を囲うことによりshow('引数')
のように書けます。
javascript
1 var i=0; 2 function show (name){ 3 console.log(name); 4 console.log(i++); 5 }; 6 setInterval("show('test')",1000); 7 8//console内容 9test 100 11test 121 13test 142 15・・・・
Chromeでは動作確認できましたが他では確認していません。
下記も参考に色々試してみてください。
投稿2017/06/14 01:39
総合スコア80850
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。