[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
518
(1): (オッペケ Sr4f-JZbg [126.194.243.148]) 2023/01/05(木)00:18 ID:7P17JKmwr(1) AAS
>>517
いや、関数かメソッドかの話じゃなくて
$('#display').html(' ')をその場で実行してその戻り値であるjQueryオブジェクトを渡しちゃってるでしょって話
ちゃんと理解できてる?
外部リンク:js.studio-kingdom.com
519
(1): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)00:26 ID:EVXeoiyo0(2/10) AAS
私の勘違いだったのですね。

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

「引数funcは必ず関数リテラルで指定してください。」
画像リンク[png]:uploda1.ysklog.net

「関数リテラルは....ある関数の引数として渡したり....」
画像リンク[png]:uploda1.ysklog.net
520: (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)00:27 ID:EVXeoiyo0(3/10) AAS
>>518
理解したありがとう!
521
(2): (ワッチョイ 2e5c-uhAF [39.3.101.10]) 2023/01/05(木)02:04 ID:hRDnYJsk0(1/2) AAS
>>519
「引数funcは必ず関数リテラルで指定してください。」
ちょっと問題のある文章だなあ

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

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

>>514
文字列で渡したら動くはず
setTimeout("$('#display').html(' ')", 1000);
522
(1): (ワッチョイ 8201-+uJR [219.204.123.70]) 2023/01/05(木)06:17 ID:O+NRT3S+0(1/3) AAS
>>521
> 「引数funcは必ず関数リテラルで指定してください。」
> ちょっと問題のある文章だなあ
まあそこは直前に文字列でも指定できるけどって書いてるから教育的指導なんだろうとは思う
まあ「必ず」という言葉が強すぎるから「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
むしろ問題は「関数リテラルは宣言した時点では、名前を持たないことから匿名関数、または無名関数と呼ばれることもあります。」の方だろうね
523
(3): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)09:18 ID:EVXeoiyo0(4/10) AAS
>>521
>文字列で渡したら動くはず
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

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

画像リンク[png]:uploda1.ysklog.net
リスト4-04 function_literal.js

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

var getTraiangle = function(base,height){
return base * height/2;
省7
524
(1): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)09:20 ID:EVXeoiyo0(5/10) AAS
あくまで、関数を変数に代入するということが、重要なのでしょうか?
525
(1): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)09:23 ID:EVXeoiyo0(6/10) AAS
「関数呼び出し」と
「引数付の関数リテラル」は
それだけみても違いわからないですね。
定義された場所を見て判断しないと。
526
(1): (オッペケ Sr4f-JZbg [126.194.246.162]) 2023/01/05(木)10:06 ID:rM8SDmmnr(1/2) AAS
>>523
>>setTimeout("$('#display').html(' ')", 1000);
>ありがとう。関数とは、関数呼び出しではなく実行される文字列
いやいや、それは関数じゃなくてただの文字列
setTimeoutの第一引数は文字列か関数って書いてあるでしょ

関数リテラルって言葉はもう忘れていいと思うよ
そもそもMDNに記述がないから便宜的なものだし、その本での説明も怪しい
定義の仕方で区分されてるだけで実質的にはただの関数で
挙動に差異があるわけでもないだろうし
527
(1): (オッペケ Sr4f-JZbg [126.194.246.162]) 2023/01/05(木)10:52 ID:rM8SDmmnr(2/2) AAS
>>522
>「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
それだとfunction命令で定義した関数は指定してはいけないと誤解されるからリテラルを削ったほうがいいかと
528: (ワッチョイ e6cf-/EFQ [153.174.224.39]) 2023/01/05(木)10:52 ID:uFuuDD5j0(1) AAS
>>523
関数リテラルという呼び方はひとまず置いといて、無名関数という概念でとらえるとよい
function(~~){~~} は見ての通り、ひとつの無名関数である

var getTraiangle = function(base,height){ return base * height/2; }
によって、変数getTraiangle でこの無名関数を参照できるようになる

getTraiangle(5,2)
では変数名を使って先の無名関数を呼び出し、戻り値が取得される
これは一般に「関数の戻り値」と呼ばれる (関数リテラルではない)

console.log('三角形の面積:'+getTraiangle(5,2));
では、「+」によって、文字列 '三角形の面積:' と数値である戻り値が連結されて、ひとつの文字列が生成される
省6
529: (ワッチョイ 2e5c-uhAF [39.3.101.10]) 2023/01/05(木)11:50 ID:hRDnYJsk0(2/2) AAS
>>523
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

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

第一引数に関数を指定する方法は>>514で君は既にやっている
setTimeout(clearDisplay, 1000);
clearDisplay関数を定義してそれをsetTimeoutの第一引数に渡している
これでいい
>>527の言う通り
省2
530: (オッペケ Sr4f-JZbg [126.194.240.4]) 2023/01/05(木)12:50 ID:w+0CNSMQr(1) AAS
関数リテラルの説明についてはここが一番しっくりくる
外部リンク[html]:www.javadrive.jp

「関数リテラルを使った関数定義」って言い回しを強調してるのが良い
だから関数リテラルを引数として渡すって言ったらこういうことだよなって
dispNum(10, 8, function(x, y){
return (x + y) / 2;
});
531
(6): (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)14:46 ID:EVXeoiyo0(7/10) AAS
すいません。やっぱり関数リテラルという意味を理解したい。。でも↓この質問でわかるかも。
だれか答えていただけますでしょうか?
---
次のコードがあります。1から5のうち
どれが適切でしょうか?

let dispMessage = function(msg){
console.log(msg);
};

1.
function(msg){console.log(msg);}
省14
532: (ワッチョイ e67b-28F+ [153.178.229.141]) 2023/01/05(木)14:53 ID:mmmJuCOb0(1) AAS
>>531
ぐぐったら以下の様に出る。結構理解しやすいと思うが。
リテラルとは リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のことである。 変数の対義語であり、変更されないことを前提とした値である。 プログラミング言語のコード中にリテラルが挿入される場合には、判別のために特定の書式を用いる必要がある。
533: (ワッチョイ 8202-9yt5 [27.92.176.51]) 2023/01/05(木)15:02 ID:EVXeoiyo0(8/10) AAS
うん。「リテラル」ということばによって惑わされてきた気がする。
534
(1): (アウアウウー Sa6b-y47Y [106.155.3.231]) 2023/01/05(木)15:06 ID:akcN5qw4a(1) AAS
関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃないの
正確な定義は構文木の定義を見れば書いてある
535: (オッペケ Sr4f-JZbg [126.208.232.21]) 2023/01/05(木)15:10 ID:HxGsZjLmr(1) AAS
>>531
1だろう
let s = "abc";
の"abc"を文字列リテラルと呼ぶけどそれを代入した変数sを
文字列リテラルとは呼ばないでしょ
536: (オッペケ Sr4f-JZbg [126.208.238.17]) 2023/01/05(木)15:28 ID:c7qQflpDr(1) AAS
>>531
で、繰り返しになるけど本やサイトによっても説明がまちまちで
MDN探しても出てこないような用語だからあまり囚われない方がいい
理解しようとして時間をかけるだけ無駄
537: (ワッチョイ 9f63-uhAF [180.58.213.164]) 2023/01/05(木)15:35 ID:m3Sm+5EJ0(1) AAS
>>531
強いて言えば1かな
でも数値・文字列・正規表現リテラルみたいにプログラム中に単独で書くことは出来ないね
変数に代入するなり関数の引数に使うなりしないとエラーになる
英語でもfunction literalっていうみたいだけど関数リテラルってあんまりいい言葉だと思わないなあ

33;
"hello";
/^js$/;

function() {return true}; //SyntaxError

こんなことにこだわるよりもっと基本的なこと勉強した方方がいいんじゃないの?
1-
あと 465 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s