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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

受付中

JQuery ()がない関数の挙動

shinoru
shinoru

総合スコア6

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

3回答

0リアクション

1クリップ

244閲覧

投稿2022/09/14 05:55

実現したいこと

単純なスライドショーを作成しています。
setIntervalを使用し3秒おきに最初の画像をフェードアウトし、次の画像をフェードインさせるのを繰り返すという挙動を目指します。

理解できない箇所

setInterval内に指定する関数の指定の方法が「()」がない記載方法が書いてあり、関数の発火をするときになぜ「()」がないのかが理解できませんでした。
関数を発火する際に「()」のなしはどのような場面で使うのか、「()」ありと何が違うのかを教えていただけると助かります。。!

//〇正しく動作 関数の後に()がない setInterval(switchImg, interval); //〇正しく動作 setIntervalの後にアロー関数なりfunctionなりを入れたときは()を入れると正しく動作 setInterval(() => {  switchImg(); }, interval); //〇 正しく動作 そもそも関数使ってないので動く setInterval(() => {  console.log('switchImg');  var imgs = container.find('img');  var first = imgs.eq(0);  var second = imgs.eq(1);  first.appendTo(container).fadeOut();  second.fadeIn();  }, interval); //× functionがないと()を入れると動作しない setInterval(switchImg(), interval);

該当のソースコード

//3秒置きに画像が変わるスライドショーを想定 $(function () { const interval = 3000; $('.slideshow').each(function(){ const container = $(this); //スライドショーの関数 function switchImg() { console.log('switchImg'); var imgs = container.find('img'); var first = imgs.eq(0);//最初の画像を取得 var second = imgs.eq(1);//次の画像を取得 first.appendTo(container).fadeOut(); second.fadeIn(); } /*★ここ以降のsetIntervalの記載の違いで挙動が変わる★ */ //〇 正しく動作 // setInterval(switchImg, interval); //〇 正しく動作 // setInterval(() => { // switchImg(); // }, interval); //〇 正しく動作 // setInterval(() => { // console.log('switchImg'); // var imgs = container.find('img'); // var first = imgs.eq(0); // var second = imgs.eq(1); // first.appendTo(container).fadeOut(); // second.fadeIn(); // }, interval); //× 関数が動かず変化なし。 console.log('switchImg');も出ない // setInterval(switchImg(), interval); }); });

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

SurferOnWww

2022/09/14 06:08 編集

setInterval() の第 1 引数は「関数」(=関数の名前=関数のアドレス)でなければなりません。 setInterval() https://developer.mozilla.org/ja/docs/Web/API/setInterval switchImg は関数、() => {switchImg();} も関数ですが、() をつけて switchImq() とすると関数ではなくてその関数の実行を表すからでしょう。
m.ts10806

2022/09/14 06:23 編集

本質的にはjQuery無関係と思います(タイトル、質問タグ)
Cocode

2022/09/24 14:56 編集

同意!これはjQueryの質問ではなくJavaScriptの質問なので、タイトルとタグからjQueryを削除したほうが、今後の方のために親切だと思います!タイトルは『コールバック関数とは?()を書くときと書かないときの違い』などいかがでしょうか。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。