[過去ログ]
JavaScript の質問用スレッド vol.125 (1002レス)
JavaScript の質問用スレッド vol.125 http://mevius.5ch.net/test/read.cgi/tech/1659855460/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
501: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/04(水) 19:02:26.96 ID:jNmuxM610 SetInterval() に与える引数は、関数リテラルでなくてはならないそうです。 となると、以下は誤りで、 SetInterval(calcResult1,1000); 以下なら問題ない SetInterval(calcResult2,1000); という理解でよろしいでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/501
502: デフォルトの名無しさん (ワッチョイ 8701-1zgH [60.103.77.208]) [sage] 2023/01/04(水) 20:37:28.67 ID:UYb7FHhp0 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/function https://developer.mozilla.org/ja/docs/Glossary/Literal リテラルに関数は含まれてないな 「関数リテラル=無名関数」が間違ってて、calcResult1 も calcResult2 は、関数リテラル。 とイコールで結んじゃうのは乱暴か 字義に従えば「無名関数」には生成時に名前をつけなかった、程度の意味しかないかと ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼない 結果的に関数式の関数は無名関数になることがほとんどで http://mevius.5ch.net/test/read.cgi/tech/1659855460/502
503: デフォルトの名無しさん (ワッチョイ 8701-1zgH [60.103.77.208]) [sage] 2023/01/04(水) 20:40:11.89 ID:UYb7FHhp0 ここでいう「関数リテラル」は関数式で記述された関数のことで、名前があろうとなかろうと「関数リテラル」でいいんだと思う http://mevius.5ch.net/test/read.cgi/tech/1659855460/503
504: 502 (ワッチョイ 8701-1zgH [60.103.77.208]) [sage] 2023/01/04(水) 20:53:07.39 ID:UYb7FHhp0 途中送信で変になってるからまとめ直し >>500,501 その文脈での「関数リテラル」ってのは関数式で記述された関数のこと(>>502のリンク参照)で、名前の有無は関係ない 名前のあるcalcResult1 も 名前のないcalcResult2 も「関数リテラル」という理解でいいと思う 「無名関数」の「無名」には生成時に名前をつけなかった、程度の意味しかないかと ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼなくて結果的に無名関数になることがほとんどではある http://mevius.5ch.net/test/read.cgi/tech/1659855460/504
505: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/04(水) 20:57:54.46 ID:jNmuxM610 >>502 すっごい分かりやすい。 モヤモヤしていたのがすっきりしました。 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/505
506: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157]) [sage] 2023/01/04(水) 21:00:20.48 ID:GLj+17iFr 調べたら自分を再帰的に呼び出す場合に名前を付けるって例があってなるほどと思った http://mevius.5ch.net/test/read.cgi/tech/1659855460/506
507: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157]) [sage] 2023/01/04(水) 21:21:00.43 ID:GLj+17iFr ちなみに>>501のsetIntervalの引数は関数リテラルでないといけないってのはどこ情報? http://mevius.5ch.net/test/read.cgi/tech/1659855460/507
508: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/04(水) 21:23:57.48 ID:jNmuxM610 あれ。関数リテラルには引数はないのか。。引数の不要な関数しか関数リテラルにならんのか。 もちょっと調べてみます。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/508
509: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/04(水) 21:32:15.85 ID:jNmuxM610 >>507 必要ならページ画像をどっかにアップします。。 技術評論社 JavaScript本格入門 https://gihyo.jp/book/2016/978-4-7741-8411-1 P362 setTimeout/SetIntervalメソッドの注意点 ...引数funcは必ず関数リテラルで指定してください。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/509
510: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/04(水) 21:39:03.24 ID:jNmuxM610 でも何かの引数に関数をわたすときは、 一般的に関数リテラルで渡すのがデフォと ぼんやり思っている。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/510
511: デフォルトの名無しさん (ワッチョイ 8701-9yt5 [60.88.115.90]) [] 2023/01/04(水) 21:47:22.56 ID:QxUfEWbZ0 技術評論社はやめとけよ。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/511
512: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157]) [sage] 2023/01/04(水) 21:55:58.51 ID:GLj+17iFr >>509 文脈がわからんけど理由は書いてあるの? 動く動かないで言えばfunction文で定義した関数リテラルでない関数を渡しても動くようだけど そもそもMDNにも関数としか書いてないし http://mevius.5ch.net/test/read.cgi/tech/1659855460/512
513: デフォルトの名無しさん (ワッチョイ 8201-+uJR [219.204.123.70]) [sage] 2023/01/04(水) 22:20:18.03 ID:lFNs7lW+0 単に著者が良く理解せずに書いてるだけな気がする http://mevius.5ch.net/test/read.cgi/tech/1659855460/513
514: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/04(水) 22:21:10.60 ID:jNmuxM610 >>512 setTimeout()の例でしかもjQueryで 申し訳ないのですが。 1秒後に#displayのhtmlの内容を空にするコードです。 以下のようなコードではsetTimeoutが動かず、 setTimeout($('#display').html(' '), 1000); 代わりに、以下で動きます。 function clearDisplay(){ $('#display').html(''); } setTimeout(clearDisplay, 1000); このことから書籍にあるように 関数リテラルでないと引数に渡せないと 思っていました。。 書籍の文脈ですが、実際にあとで画像アップします。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/514
515: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.244.157]) [sage] 2023/01/04(水) 22:46:11.56 ID:GLj+17iFr >setTimeout($('#display').html(' '), 1000); これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない? html()が戻り値としてjQueryを返すからそれが引数として渡ってるでしょ >function clearDisplay(){ > $('#display').html(''); >} これもfunction「文」で定義してるから>>504で言うところの関数リテラルには当てはまらない関数だよね http://mevius.5ch.net/test/read.cgi/tech/1659855460/515
516: デフォルトの名無しさん (ワッチョイ e6cf-/EFQ [153.174.224.39]) [sage] 2023/01/04(水) 23:53:56.91 ID:PU4coe7B0 アロー関数式を使うことで、関数リテラルによる関数定義を より簡略化して記述することができます ただし、this には注意してください http://mevius.5ch.net/test/read.cgi/tech/1659855460/516
517: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 00:01:25.43 ID:EVXeoiyo0 >>515 setTimeout($('#display').html(' '), 1000); これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない? 渡しているのは関数じゃない。。 んー。メソッドか。だから動かない。 ありがとう。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/517
518: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.243.148]) [sage] 2023/01/05(木) 00:18:03.56 ID:7P17JKmwr >>517 いや、関数かメソッドかの話じゃなくて $('#display').html(' ')をその場で実行してその戻り値であるjQueryオブジェクトを渡しちゃってるでしょって話 ちゃんと理解できてる? https://js.studio-kingdom.com/jquery/manipulation/html#1 http://mevius.5ch.net/test/read.cgi/tech/1659855460/518
519: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 00:26:22.30 ID:EVXeoiyo0 私の勘違いだったのですね。 たしかに関数ではない。。 一応書籍のページ画像をuploadしました。 「引数funcは必ず関数リテラルで指定してください。」 https://uploda1.ysklog.net/uploda/8298a4c0da.png 「関数リテラルは....ある関数の引数として渡したり....」 https://uploda1.ysklog.net/uploda/0bcdf35455.png http://mevius.5ch.net/test/read.cgi/tech/1659855460/519
520: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 00:27:48.45 ID:EVXeoiyo0 >>518 理解したありがとう! http://mevius.5ch.net/test/read.cgi/tech/1659855460/520
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 482 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s