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

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

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

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

Q&A

解決済

2回答

257閲覧

ドキュメントに載っていたコードの構文が分からない。

slimat

総合スコア57

JavaScript

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

0グッド

0クリップ

投稿2019/03/23 02:58

編集2019/03/23 03:23

こんにちは。

リンク内容
のページにある下記コードのsetIntervalのところの構文が分かりません。自分的には、アロー関数の即時関数のように見えるけど、1000というよく分からない数字が{}の外にあったり、全体が()で囲まれていたりするところが分かりません。
これはどのような処理の流れになるのでしょうか。

JavaScript

1function Person(){ 2 this.age = 0; 3 4 setInterval(() => { 5 this.age++; // |this| は person オブジェクトを適切に参照します。 6 }, 1000); 7} 8 9var p = new Person();

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

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

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

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

Lhankor_Mhy

2019/03/23 03:06

ご不明の部分を読み取れているかどうか、少し不安です。 「1秒ごとにthis.ageに1を加算する、という処理です」 とか、そういうご回答でいいのでしょうか?
slimat

2019/03/23 03:11

はい、そのような回答を頂けると嬉しいです。
guest

回答2

0

setIntervalのところの構文が分かりません

同じくMDNを確認されてはいかがでしょう。

【WindowOrWorkerGlobalScope.setInterval() - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

構文

js

1var intervalID = scope.setInterval(func, delay[, param1, param2, ...]); 2var intervalID = scope.setInterval(code, delay);

投稿2019/03/23 03:24

kei344

総合スコア69407

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

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

slimat

2019/03/23 03:28

回答有り難うございます。 setIntervalというのはJavaScriptの方で元々ある関数というのを知りませんでした。()の中が長かったので、中身が実引数だという考えにたどり着けませんでした。
kei344

2019/03/23 03:31

定義されていない関数/メソッドが出てきたら、一度検索してみましょう。JavaScriptも日々進化しているので、「いつの間にか増えている!」と私も驚くことがあります。
slimat

2019/03/23 03:43

質問時は、質問文のコードのsetIntervalの部分は普通の関数定義がアロー関数に変わって、即時関数に変わってややこしい形になっているものというような解釈でした。関数定義をしている関数で即時関数っぽい、というような解釈でした。なので、関数の呼び出しという形に理解できていませんでした。
slimat

2019/03/23 03:45

今、JavaScriptを勉強中なのですが、今までコールバック関数に出会った回数が少なかったので、コールバック関数であると理解できませんでした。
kei344

2019/03/23 03:50

「ややこしい」ものは分解して考えることをお勧めします。「setInterval」は知らなかったとしても、そこに記号でない文字列があるのだから、そういう未知のものから手を付けてみてください。先ほどのコメントはそういうコメントです。
slimat

2019/03/23 04:00

記号で無い文字列というのは、setIntervalのことでしょうか。 私は、function setInterval() { 処理 }という形が即時関数・アロー関数の形に変形したものという解釈をしていて、でも、それだと", 1000"の部分が邪魔になってしまう...というところで混乱していました。
kei344

2019/03/23 05:23

たどり着けなかったということについては今回そうだった、という話でしかなく、「次そういうものに出会ったらこうしてみては」という意図でコメントしたつもりなのですが、わかりづらくてすみません。
slimat

2019/03/23 06:22

次も、今回のように、そもそも、 setInterval(() => { this.age++; // |this| は person オブジェクトを適切に参照します。 }, 1000); をJavaScriptの方で定義済みの関数の実行文であると気付けずに、自作関数の定義中の文であるというふうに頭の中が、完全にその方向になっている時に、関数名を検索するのは、自作関数の関数名を検索するということなので、なかなか難しいですが、一度した過ちは二度目に同じ状況に出くわした時には人間感付くと思いますので、次回は大丈夫だと思います。 自作関数という言葉を使ってしまっていましたが、自作ではなかったです。すみません。 おそらく次は頭の中が完全に"関数定義中"という解釈になる沼に落ちずに、kei344さんのおっしゃる通りに検索できると思います。ありがとうございます。
guest

0

ベストアンサー

setInterval()は引数を2つ以上取ります。

var intervalID = scope.setInterval(func, delay[, param1, param2, ...]);

func
ミリ秒単位の delay が経過するたびに実行する 関数 です。関数には引数が渡されず、また戻り値を想定していません。
delay
指定した関数またはコードを実行する前にタイマーが待つべき時間をミリ秒 (1/1000 秒) 単位で指定します。
WindowOrWorkerGlobalScope.setInterval() - Web API | MDN

ひとつ目の引数がアロー関数、ふたつ目が1000ですから、1000ミリ秒ごとにアロー関数が実行されます。

投稿2019/03/23 03:23

Lhankor_Mhy

総合スコア36115

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

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

slimat

2019/03/23 03:26

回答有り難うございます。 setIntervalはJavaScriptの方で元々ある関数だったのですね!自作関数だと思っていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問