[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
前次1-
抽出解除 レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
521
(2): デフォルトの名無しさん (ワッチョイ 2e5c-uhAF [39.3.101.10]) [sage] 2023/01/05(木) 02:04:13.18 ID:hRDnYJsk0(1/2) AAS
>>519
519(1): デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 00:26:22.30 ID:EVXeoiyo0(2/10) AAS
私の勘違いだったのですね。

たしかに関数ではない。。
一応書籍のページ画像をuploadしました。

「引数funcは必ず関数リテラルで指定してください。」
画像リンク


「関数リテラルは....ある関数の引数として渡したり....」
画像リンク
「引数funcは必ず関数リテラルで指定してください。」
ちょっと問題のある文章だなあ

外部リンク:developer.mozilla.org
第一引数は関数またはjavascriptコードとして実行される文字列

関数ってのは関数呼び出しじゃなくて関数名、または無名関数(関数リテラル)

>>514
514(2): デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/04(水) 22:21:10.60 ID:jNmuxM610(8/8) AAS
>>512
setTimeout()の例でしかもjQueryで
申し訳ないのですが。
1秒後に#displayのhtmlの内容を空にするコードです。

以下のようなコードではsetTimeoutが動かず、

setTimeout($('#display').html(' '), 1000);

代わりに、以下で動きます。

function clearDisplay(){
$('#display').html('');
}
setTimeout(clearDisplay, 1000);

このことから書籍にあるように
関数リテラルでないと引数に渡せないと
思っていました。。

書籍の文脈ですが、実際にあとで画像アップします。
文字列で渡したら動くはず
setTimeout("$('#display').html(' ')", 1000);
529: デフォルトの名無しさん (ワッチョイ 2e5c-uhAF [39.3.101.10]) [sage] 2023/01/05(木) 11:50:49.92 ID:hRDnYJsk0(2/2) AAS
>>523
523(3): デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 09:18:58.87 ID:EVXeoiyo0(4/10) AAS
>>521
>文字列で渡したら動くはず
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

次いでもう一点お願いします。

画像リンク

リスト4-04 function_literal.js

以下は、関数リテラルを使ってリスト4-01を書き換えたものです。

var getTraiangle = function(base,height){
return base * height/2;
}

console.log('三角形の面積:'+getTrianle(5,2));

↑の
getTrianle(5,2)
は、関数リテラルなのですね。
てっきり()がないものが関数リテラルと思っていたが、
どうも、それも間違いようで。
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

違う。全く違う。めっちゃ大事なことだから勘違いしないで
それはsetTimeoutoの第一引数を文字列として指定した場合のこと

第一引数に関数を指定する方法は>>514で君は既にやっている
setTimeout(clearDisplay, 1000);
clearDisplay関数を定義してそれをsetTimeoutの第一引数に渡している
これでいい
>>527
527(1): デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.246.162]) [sage] 2023/01/05(木) 10:52:19.71 ID:rM8SDmmnr(2/2) AAS
>>522
>「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
それだとfunction命令で定義した関数は指定してはいけないと誤解されるからリテラルを削ったほうがいいかと
の言う通り

>>526
526(1): デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.246.162]) [sage] 2023/01/05(木) 10:06:29.26 ID:rM8SDmmnr(1/2) AAS
>>523
>>setTimeout("$('#display').html(' ')", 1000);
>ありがとう。関数とは、関数呼び出しではなく実行される文字列
いやいや、それは関数じゃなくてただの文字列
setTimeoutの第一引数は文字列か関数って書いてあるでしょ

関数リテラルって言葉はもう忘れていいと思うよ
そもそもMDNに記述がないから便宜的なものだし、その本での説明も怪しい
定義の仕方で区分されてるだけで実質的にはただの関数で
挙動に差異があるわけでもないだろうし
の言う通り今は無名関数とか関数リテラルとかにこだわらない方がいい
>>523のうp画像に無名関数は重要な概念なので後ほど詳述ってあるからそこをみっちり勉強してね
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.041s