質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

5回答

2373閲覧

java script setIntervalについて

violineer

総合スコア72

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/06/13 13:03

編集2017/06/21 08:30

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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

window.setInterval - MDN

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

tkturbo

総合スコア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

Yosuke-Kawakami

総合スコア123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

大きく3つの書き方があります

(1)古い方法=文字列としてわたす→最近はあまり推奨されない

javascript

1setInterval("show()",1000);

(2)その後流行った方式

javascript

1setInterval(function(){show()},1000);

(3)一部重宝されている方式

javascript

1setInterval(()=>{show()},1000);

やってることは(2)も(3)も同じです

投稿2017/06/15 13:24

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

kei344

総合スコア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

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問