[過去ログ]
JavaScript の質問用スレッド vol.125 (1002レス)
JavaScript の質問用スレッド vol.125 http://mevius.5ch.net/test/read.cgi/tech/1659855460/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
460: デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201]) [sage] 2022/12/23(金) 17:28:12.54 ID:o+ONuUnd0 >>458で指摘している通り、他の所から読み込んだスタイルはそもそも変更出来ないって書いてあるんじゃね? https://w3c.github.io/csswg-drafts/cssom/ > Cross-origin stylesheets are not allowed to be read or changed. >>459のように実際にcssRulesにアクセスすると自分の所のcssじゃない場合をアクセスしようとすると Uncaught DOMException: Failed to read the 'cssRules' property from 'CSSStyleSheet':
Cannot access rules at <anonymous>:1:76 みたいなエラーになる cssをいじりたいのだろうけど、そういう低層の話じゃなくて本当にやりたい事を書いた方が答えが得られると思うよ 結局何がやりたいのか全く分からんw http://mevius.5ch.net/test/read.cgi/tech/1659855460/460
461: デフォルトの名無しさん (ワッチョイ 427c-e5AJ [43.235.241.201]) [sage] 2022/12/23(金) 17:30:32.01 ID:o+ONuUnd0 変な日本語になってるなw >>459のように実際に自分の所のでは無いcssRulesをアクセスしようとすると Uncaught DOMException: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules at <anonymous>:1:76 みたいなエラーになる http://mevius.5ch.net/test/read.cgi/tech/1659855460/461
462: デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89]) [sage] 2022/12/23(金) 19:30:29.91 ID:OG24yN7PH >>458 459,460,461 皆様ありがとうございます 具体的にこれをしたいというのはなかったんですけど js勉強していまして、そういうことできるのかな?という質問でした jsのエンジンは<link rel>を実行すると jsの実行コンテキストを記録するメモリ部分に <rel>の情報をロードして HTML要素を読み込んだ時に参照するという挙動なら クロスオリジンの適用を受けずに編集できるかなと そういう疑問も持ちまして質問さ
せていただきました 皆様ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/462
463: デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.240.154]) [sage] 2022/12/23(金) 20:54:13.31 ID:2ps+kI7qr >>462 >クロスオリジンの適用を受けずに編集できるかなと 君の>>450や>>457の発言ではCSS参照が別ファイルでも同一オリジンでは問題なく出来て 別オリジンのみ問題が発生していると認識しているとは読み取れないけども 別ファイル即ち別オリジンと勘違いしてない? 同一オリジンなら別ファイルでも参照出来ることは理解してる? http://mevius.5ch.net/test/read.cgi/tech/1659855460/463
464: デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89]) [sage] 2022/12/23(金) 20:55:49.05 ID:OG24yN7PH >>460 今勉強再開して思い出しました。 @keyframesのプロパティや値を 動的に変更したいと考えたのです 同じファイルなら <style id="st"> として、stから@keyframesを設定編集できますが 外部ファイルでの設定編集ができないので できたらいいな、って質問してみました http://mevius.5ch.net/test/read.cgi/tech/1659855460/464
465: デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89]) [sage] 2022/12/23(金) 20:57:53.66 ID:OG24yN7PH >>463 勘違い、混乱してました。ありがとうございます! http://mevius.5ch.net/test/read.cgi/tech/1659855460/465
466: デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.240.154]) [sage] 2022/12/23(金) 21:10:25.93 ID:2ps+kI7qr >>465 で、>>450で参照したかったのは本当に別サーバ等のcssだったのか それともhtmlやjsと同じ場所に置いてあるcssだったのかどっち? http://mevius.5ch.net/test/read.cgi/tech/1659855460/466
467: デフォルトの名無しさん (JP 0H11-JDfe [126.249.157.89]) [sage] 2022/12/23(金) 21:19:54.48 ID:OG24yN7PH >>466 ローカルで、同じフォルダ内です http://mevius.5ch.net/test/read.cgi/tech/1659855460/467
468: デフォルトの名無しさん (ワッチョイ 1961-x3o1 [222.144.111.42]) [sage] 2022/12/23(金) 21:28:01.20 ID:G5aj5uG70 @keyframesなんかも後のスタイルで再定義できるんだから DOMにstyle要素追加してそこに上書きルール突っ込んでそっちを操作すればいいじゃない http://mevius.5ch.net/test/read.cgi/tech/1659855460/468
469: デフォルトの名無しさん (オッペケ Sr11-y+PC [126.194.240.154]) [sage] 2022/12/23(金) 21:39:17.88 ID:2ps+kI7qr >>467 それは本来別オリジンではないんだけどブラウザがローカルアクセスに対するセキュリティの一環として制限をかけてる模様 詳しくはググって >>459のスクリプトを実行して file:///~ の行のあとに例外が出るならそれが原因 対策としてはローカルにwebサーバを立ててhttp経由でアクセスする そうすればスクリプト実行で例外が発生せずcssの中身が読み取れる webサーバはそんな大層なものは必要なくてvscode
のLiveServerで十分 http://mevius.5ch.net/test/read.cgi/tech/1659855460/469
470: デフォルトの名無しさん (ワッチョイ eecf-DiWi [153.174.224.39]) [sage] 2022/12/23(金) 21:55:43.41 ID:gwhrrj9D0 DevTools を弄れるなら、要素タブでスタイル欄を見れば 適用内容と設定元のファイルが行番号付きで確認できるし アニメーションを弄りたいなら、「その他のツール」に「アニメーション」がある(chrome) http://mevius.5ch.net/test/read.cgi/tech/1659855460/470
471: デフォルトの名無しさん (ワッチョイ 1df0-aH43 [58.98.96.219]) [sage] 2022/12/24(土) 09:52:50.24 ID:Lk0KbRC60 皆様いろいろありがとうございます 時間とれましたら確認させていただきます http://mevius.5ch.net/test/read.cgi/tech/1659855460/471
472: デフォルトの名無しさん (オッペケ Sr37-r/3v [126.208.236.65]) [sage] 2022/12/24(土) 10:46:15.28 ID:se6E0pPpr >>471 少し調べたらchromeのオプションでクロスオリジン制約を回避する方法があった chrome クロスオリジン で検索 これならwebサーバを立てる必要もなくてお手軽 http://mevius.5ch.net/test/read.cgi/tech/1659855460/472
473: デフォルトの名無しさん (ワッチョイ b661-s0Sd [61.199.41.250]) [sage] 2022/12/24(土) 14:27:49.26 ID:0WYu35VL0 firefoxもsecurity.fileuri.strict_origin_policyをfalseにすれば回避できるけど 早いうちにローカルサーバ立てることを覚えた方が後が楽になると思うよ 対象要素が1つなら@keyframes書き換えるよりWebAnimationAPI使った方がいいかもしれないし やりたいことはぼかさずにはっきり書いた方がいいよ http://mevius.5ch.net/test/read.cgi/tech/1659855460/473
474: デフォルトの名無しさん (ワッチョイ ef79-EkqE [220.150.90.192]) [sage] 2022/12/24(土) 22:49:22.50 ID:oMpeQZG30 HTA(hta+ie)にとって替わるみたいな環境っていまだにないのかな PWAみたいのではなく、javascript(やvbs)でWindowsのフレームワーク(.NETやCOMやら)と連携できるようなやつが欲しい WebView2は思想的にHTAと比べて退化してるようにしか見えないけどこれぐらいなのか… http://mevius.5ch.net/test/read.cgi/tech/1659855460/474
475: デフォルトの名無しさん (ワッチョイ fabd-ejFo [221.171.102.246]) [sage] 2022/12/25(日) 03:50:26.67 ID:Y7ZN657d0 >>474 そういや前はちょっとしたツールを HTA で書いたりしたけど、もう使えない? http://mevius.5ch.net/test/read.cgi/tech/1659855460/475
476: デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89]) [sage] 2022/12/25(日) 12:52:51.27 ID:GFtl9gAsH 皆さん、ありがとうございます 別シートのcssで可変にしたい部分を変数にし 読み込むシート側に変数専用のstyleタグを用意し 変数用のスタイルタグを編集することにしました 皆様いろいろとありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/476
477: デフォルトの名無しさん (オッペケ Sr37-r/3v [126.208.229.48]) [sage] 2022/12/25(日) 13:14:34.27 ID:g8CAn8EMr 要するにクロスオリジン問題を解決して>>450を実現したのではなくて 別の方法を取ったということ? http://mevius.5ch.net/test/read.cgi/tech/1659855460/477
478: デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89]) [sage] 2022/12/25(日) 13:37:10.68 ID:GFtl9gAsH そうです >>468様のアドバイスなら 私の学習レベルでもググり時間とられずにできそうだと思いまして style.css @keyframes xxx{ *** : var(--prm) } index.html <style id="prm"></style> <script> prm.innerHTML=":root {--prm:50% }" のように、変数を編集するstyleタグを設けました 見栄え悪いしかっこ悪いんですけど いろんな変数を設定変更する関数も自作できそうですので とりあえずはこれで
いいかなと http://mevius.5ch.net/test/read.cgi/tech/1659855460/478
479: デフォルトの名無しさん (ワッチョイ 1e61-3CYd [180.23.194.154]) [sage] 2022/12/25(日) 14:26:34.39 ID:kQ0MTzKr0 >>478 それならわざわざstyle要素作って直に操作する必要はない 変数の最初の定義もcssファイルの方に書いておいて 変更したい時は document.documentElement.style.setProperty("--prm", "100%"); とかすればいいだけ http://mevius.5ch.net/test/read.cgi/tech/1659855460/479
480: デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89]) [sage] 2022/12/25(日) 15:40:19.02 ID:GFtl9gAsH >>479 ありがとうございます!そうさせていただきます。 今後ともいろいろ教えてください。ありがとうござました! http://mevius.5ch.net/test/read.cgi/tech/1659855460/480
481: デフォルトの名無しさん (オッペケ Srd9-r/3v [126.194.247.243]) [sage] 2022/12/25(日) 16:48:37.78 ID:sJzx1gQhr >>478 >私の学習レベルでもググり時間とられずにできそうだと思いまして webサーバ云々が億劫だってのは分かるからしょうがないけども せめて>>472ぐらいは実際に試して欲しかったな ググって最初に出てくる記事にすぐ出来るやり方が具体的に書いてあるんだし http://mevius.5ch.net/test/read.cgi/tech/1659855460/481
482: デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89]) [sage] 2022/12/25(日) 16:50:28.05 ID:GFtl9gAsH >>479様 面白かったです。 <html><head><body><div> どの要素にでも、setProperty('param','value')を設定しておけば 別ファイルに作ったスタイルシートの変数を参照できるのですね 疑似的なコードですが <script> body.setProperty('--color','red') div.setProperty('--color','blue') html.setProperty('--color','green) とすると、子孫のスタイル設定が優先されることも理解できました とても
面白く学習できました、ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/482
483: デフォルトの名無しさん (JP 0H88-aH43 [126.249.157.89]) [sage] 2022/12/25(日) 16:51:23.54 ID:GFtl9gAsH >>481 ありがとうございます 次時間ができたときにぜひ調べて実行してみます http://mevius.5ch.net/test/read.cgi/tech/1659855460/483
484: デフォルトの名無しさん (スプッッ Sd5e-HEC+ [1.75.242.54]) [sage] 2022/12/25(日) 17:00:33.10 ID:gv3ThvO8d もう解決したんだしどうでもいいからお礼だけ言って体よく話を打ち切りたいって思いがヒシヒシ伝わってくるな http://mevius.5ch.net/test/read.cgi/tech/1659855460/484
485: デフォルトの名無しさん (ワッチョイ 1df0-aH43 [58.98.96.219]) [sage] 2022/12/26(月) 13:51:42.59 ID:fuxINEHv0 >>469様 Live serverを使って、別のスタイルシートで設定した、フォント色の変更はOKでした。 ありがとうございました。 ただ、@keyframesに関しては、CSSKeyframeRule__{keyText..,style,,cssText,,}__までは見れたのですが 内容の変更方法が分からないため断念しました 時間あるときに再チャレンジしてみます 皆様ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/485
486: デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) [sage] 2022/12/26(月) 15:01:08.23 ID:pO4MU7IP0 var ptEQ = 25.4 / 72; var SWmm = 0; mainfn(); function mainfn() { win1 = new Window('dialog', "Set Strokewidth"); win1.pnl = win1.add('panel'); win1.pnl.orientation = "column"; pg1 = win1.pnl.add('group'); pg1.orientation = "row"; pg1.add("statictext", [0, 0, 140, 23], "線幅を選択してください"); pg2 = win1.pnl.add('group'); rd21 = pg2.ad
d("dropdownlist", [20, 40, 150, 65], ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm", "0.3 mm", "0.4 mm", "0.5 mm", "0.6 mm" ]); rd21.selection = 0; pg9 = win1.pnl.add('group'); pg9.orientation = "row"; CAN = pg9.add("button", [0, 0, 100, 30], "cancel"); OK = pg9.add("button", [0, 0, 100, 30], "OK"); CAN.onClick = function() { win1.close() } OK.onClick =
function() { win1.close(); dofn(); } win1.show(); } http://mevius.5ch.net/test/read.cgi/tech/1659855460/486
487: デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) [sage] 2022/12/26(月) 15:02:39.66 ID:pO4MU7IP0 function dofn() { var SWmmS = rd21.selection.text; var SWmm = parseFloat(SWmmS); var SWpt = SWmm / ptEQ; var rectObj = activeDocument.pathItems.rectangle(-420.94488, 297.638, 150, 100); rectObj.filled = false; rectObj.stroked = true; rectObj.strokeColor = CMYKfn(0, 0, 0, 100); rectObj.strokeWidth = SWpt; rectObj.selected = true; rectObj.remove(); function CMYKfn(c, m, y, k) { COL = ne
w CMYKColor(); COL.cyan = c; COL.magenta = m; COL.yellow = y; COL.black = k; return COL; } } http://mevius.5ch.net/test/read.cgi/tech/1659855460/487
488: デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) [sage] 2022/12/26(月) 15:07:33.18 ID:pO4MU7IP0 線幅を変更するスクリプトなのですが、一応完成しました。 自分で使うだけならこれでいいのですが、他人に使ってもらう場合、ダイアログに「線幅を追加する」という項目を増やしたいと思っています。 rd21 = pg2.add("dropdownlist", [20, 40, 150, 65], ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm", "0.3 mm", "0.4 mm", &q
uot;0.5 mm", "0.6 mm"]); のところに項目を追加していくようなコードを書くことは可能なのでしょうか? 自分自身を書き換えるコードだと思うのですが… (削除はどうでしょうか? 例えば0.15 mmがいらないと思った場合、"0.15 mm"のを削除するコードを書くことは可能ですか?) http://mevius.5ch.net/test/read.cgi/tech/1659855460/488
489: デフォルトの名無しさん (スプッッ Sd5e-HEC+ [1.75.242.231]) [sage] 2022/12/26(月) 15:27:01.38 ID:oXRhIFIqd スレ内を線幅で検索しても何も引っかからないのにこの書き出しで何か伝わると思ってるのすごいわ 線幅の配列を関数内で直書きしてるから自身を書き換えるとか面倒なことを考える必要があるわけで 関数の外に変数で宣言しとけば追加も削除もなんとでもなるでしょ http://mevius.5ch.net/test/read.cgi/tech/1659855460/489
490: デフォルトの名無しさん (ワッチョイ de01-WsKb [60.103.67.153]) [sage] 2022/12/26(月) 15:55:16.01 ID:gS/UmYxh0 確かIllustratorかなんかのスクリプトでしょ ここ見てるほとんどはWebブラウザやnode.jsのJavaScriptは知っててもそっちは知らないと思う 文法的にはJavaScriptと同じでも出てくるオブジェクトは独自のものだろうし説明しないとわからんよ http://mevius.5ch.net/test/read.cgi/tech/1659855460/490
491: デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) [sage] 2022/12/26(月) 16:14:37.67 ID:pO4MU7IP0 >>489 素人でもエディタで開かないとダメということですね。 var mm = ["0.1 mm", "0.12 mm", "0.15 mm", "0.2 mm", "0.25 mm", "0.3 mm", "0.4 mm", "0.5 mm", "0.6 mm"] // 線幅の項目を増やしたり削除したい場合は、上の1行を書き換えてください こう先頭に書き加えました。 http://mevius.5ch.net/test/read.cgi
/tech/1659855460/491
492: デフォルトの名無しさん (ワッチョイ 114b-+VVc [110.2.215.28 [上級国民]]) [sage] 2022/12/26(月) 16:16:02.82 ID:pO4MU7IP0 >>490 すみません 気を付けます http://mevius.5ch.net/test/read.cgi/tech/1659855460/492
493: デフォルトの名無しさん (スプッッ Sd5e-HEC+ [1.75.242.231]) [sage] 2022/12/26(月) 16:45:32.21 ID:oXRhIFIqd >>491 意図が理解されなかったということが分かった コメント付けるって妥協するなら>>486のままでもいいでしょ ここの住人はadobe独自のことは詳しくないんだし他所で聞いたほうが的確な答えが返ってくるよ そもそもここはスレ違い http://mevius.5ch.net/test/read.cgi/tech/1659855460/493
494: デフォルトの名無しさん (スップ Sd42-gE1B [49.97.104.195]) [sage] 2022/12/26(月) 17:18:59.92 ID:l7z7KEaud >>475 htaまだまだこれからだ ただhighDPI環境でスケーリング200%とかだとおかしな事になった想い出 http://mevius.5ch.net/test/read.cgi/tech/1659855460/494
495: デフォルトの名無しさん (オッペケ Sr37-r/3v [126.208.225.253]) [sage] 2022/12/26(月) 22:12:09.27 ID:LJgewTa3r >>485 ①chromeで↓のurlを開く https://yari-demos.prod.mdn.mozit.cloud/ja/docs/Web/CSS/CSS_Animations/Using_CSS_animations/_sample_.making_it_move_back_and_forth.html ②chromeのコンソールを開いて↓を入力する document.styleSheets[1].cssRules[1].cssRules[0].style.marginLeft = "50%" http://mevius.5ch.net/test/read.cgi/tech/1659855460/495
496: デフォルトの名無しさん (ワッチョイ 1df0-aH43 [58.98.96.219]) [sage] 2022/12/27(火) 15:47:36.10 ID:LHsOSApx0 >>495 ありがとうございました 所望の動作を確認できました JSはいろんな方法があるんですね http://mevius.5ch.net/test/read.cgi/tech/1659855460/496
497: デフォルトの名無しさん (オッペケ Sr4f-XOVI [126.34.121.172]) [sage] 2023/01/02(月) 12:58:47.15 ID:A6ceP6kcr >>474 pythonのeelモジュールを使えば、昔のhtaっぽいことができます http://mevius.5ch.net/test/read.cgi/tech/1659855460/497
498: デフォルトの名無しさん (ワッチョイ a779-rE+U [220.150.90.192]) [sage] 2023/01/02(月) 17:25:19.15 ID:V1TEslsJ0 >>497 OSに標準で入ってるedgeで使えるのはいいなあ 情報ありがとう http://mevius.5ch.net/test/read.cgi/tech/1659855460/498
499: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/04(水) 19:01:14.59 ID:jNmuxM610 「無名関数」、「関数リテラル」の理解がちょっとぼやけています。 次の様なコードがあったとき、 let calcResult = function calc(a,b){ return a*b; } calc() と()をつけて表せるものが普通の関数、それを変数に代入したもの calcResult が関数リテラルかと思っていました。 しかし、どうやら違うようで。。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/499
500: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/04(水) 19:01:57.33 ID:jNmuxM610 例えば以下の2つの関数があります。 ■「function関数」を変数に格納 let calcResult1 = function calc(a,b){ return a*b; } ■「無名関数」を変数に格納 let calcResult2 = function(a,b){ return a*b; } 「無名関数」は「関数リテラル」と同義である。とさまざまな文献に記述されています。 ならば、 calcResult1 は、関数リテラルではない。 calcResult2 は、関数リテラルである。 という認識で間違っていないでしょうか? htt
p://mevius.5ch.net/test/read.cgi/tech/1659855460/500
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/165
9855460/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
521: デフォルトの名無しさん (ワッチョイ 2e5c-uhAF [39.3.101.10]) [sage] 2023/01/05(木) 02:04:13.18 ID:hRDnYJsk0 >>519 「引数funcは必ず関数リテラルで指定してください。」 ちょっと問題のある文章だなあ https://developer.mozilla.org/ja/docs/Web/API/setTimeout 第一引数は関数またはjavascriptコードとして実行される文字列 関数ってのは関数呼び出しじゃなくて関数名、または無名関数(関数リテラル) >>514 文字列で渡したら動くはず setTimeout("$('#display').html(' ')", 1000); http://mevius.5ch.net/test/
read.cgi/tech/1659855460/521
522: デフォルトの名無しさん (ワッチョイ 8201-+uJR [219.204.123.70]) [sage] 2023/01/05(木) 06:17:33.15 ID:O+NRT3S+0 >>521 > 「引数funcは必ず関数リテラルで指定してください。」 > ちょっと問題のある文章だなあ まあそこは直前に文字列でも指定できるけどって書いてるから教育的指導なんだろうとは思う まあ「必ず」という言葉が強すぎるから「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う むしろ問題は「関数リテラルは宣言した時点では、名前を持たないことから匿名関数、または無名関数と呼ばれるこ
ともあります。」の方だろうね http://mevius.5ch.net/test/read.cgi/tech/1659855460/522
523: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 09:18:58.87 ID:EVXeoiyo0 >>521 >文字列で渡したら動くはず >setTimeout("$('#display').html(' ')", 1000); ありがとう。関数とは、関数呼び出しではなく実行される文字列 次いでもう一点お願いします。 https://uploda1.ysklog.net/uploda/0bcdf35455.png リスト4-04 function_literal.js 以下は、関数リテラルを使ってリスト4-01を書き換えたものです。 var getTraiangle = function(base,height){ return base * height/2; } c
onsole.log('三角形の面積:'+getTrianle(5,2)); ↑の getTrianle(5,2) は、関数リテラルなのですね。 てっきり()がないものが関数リテラルと思っていたが、 どうも、それも間違いようで。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/523
524: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 09:20:11.59 ID:EVXeoiyo0 あくまで、関数を変数に代入するということが、重要なのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/524
525: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [] 2023/01/05(木) 09:23:08.82 ID:EVXeoiyo0 「関数呼び出し」と 「引数付の関数リテラル」は それだけみても違いわからないですね。 定義された場所を見て判断しないと。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/525
526: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.246.162]) [sage] 2023/01/05(木) 10:06:29.26 ID:rM8SDmmnr >>523 >>setTimeout("$('#display').html(' ')", 1000); >ありがとう。関数とは、関数呼び出しではなく実行される文字列 いやいや、それは関数じゃなくてただの文字列 setTimeoutの第一引数は文字列か関数って書いてあるでしょ 関数リテラルって言葉はもう忘れていいと思うよ そもそもMDNに記述がないから便宜的なものだし、その本での説明も怪しい 定義の仕方で区分されてるだけで実質的にはただの関数
で 挙動に差異があるわけでもないだろうし http://mevius.5ch.net/test/read.cgi/tech/1659855460/526
527: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.246.162]) [sage] 2023/01/05(木) 10:52:19.71 ID:rM8SDmmnr >>522 >「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う それだとfunction命令で定義した関数は指定してはいけないと誤解されるからリテラルを削ったほうがいいかと http://mevius.5ch.net/test/read.cgi/tech/1659855460/527
528: デフォルトの名無しさん (ワッチョイ e6cf-/EFQ [153.174.224.39]) [sage] 2023/01/05(木) 10:52:37.45 ID:uFuuDD5j0 >>523 関数リテラルという呼び方はひとまず置いといて、無名関数という概念でとらえるとよい function(~~){~~} は見ての通り、ひとつの無名関数である var getTraiangle = function(base,height){ return base * height/2; } によって、変数getTraiangle でこの無名関数を参照できるようになる getTraiangle(5,2) では変数名を使って先の無名関数を呼び出し、戻り値が取得される これは一般に
「関数の戻り値」と呼ばれる (関数リテラルではない) console.log('三角形の面積:'+getTraiangle(5,2)); では、「+」によって、文字列 '三角形の面積:' と数値である戻り値が連結されて、ひとつの文字列が生成される console.log()がそれを出力する >>525 何かしら(無名)関数を使うにあたり、引数が要るなら付ける、要らないなら付けない、それだけの話 あなたの言う「引数付の関数リテラル」は勘違いで、「引数付きの関数呼び出し」に過ぎない >>524 そういうこと http://mevius.5ch.net/test/read.cgi/tech/1659855460/528
529: デフォルトの名無しさん (ワッチョイ 2e5c-uhAF [39.3.101.10]) [sage] 2023/01/05(木) 11:50:49.92 ID:hRDnYJsk0 >>523 >setTimeout("$('#display').html(' ')", 1000); ありがとう。関数とは、関数呼び出しではなく実行される文字列 違う。全く違う。めっちゃ大事なことだから勘違いしないで それはsetTimeoutoの第一引数を文字列として指定した場合のこと 第一引数に関数を指定する方法は>>514で君は既にやっている setTimeout(clearDisplay, 1000); clearDisplay関数を定義してそれをsetTimeoutの第一引数に渡してい
る これでいい >>527の言う通り >>526の言う通り今は無名関数とか関数リテラルとかにこだわらない方がいい >>523のうp画像に無名関数は重要な概念なので後ほど詳述ってあるからそこをみっちり勉強してね http://mevius.5ch.net/test/read.cgi/tech/1659855460/529
530: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.194.240.4]) [sage] 2023/01/05(木) 12:50:07.72 ID:w+0CNSMQr 関数リテラルの説明についてはここが一番しっくりくる https://www.javadrive.jp/javascript/function/index5.html 「関数リテラルを使った関数定義」って言い回しを強調してるのが良い だから関数リテラルを引数として渡すって言ったらこういうことだよなって dispNum(10, 8, function(x, y){ return (x + y) / 2; }); http://mevius.5ch.net/test/read.cgi/tech/1659855460/530
531: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 14:46:47.66 ID:EVXeoiyo0 すいません。やっぱり関数リテラルという意味を理解したい。。でも↓この質問でわかるかも。 だれか答えていただけますでしょうか? --- 次のコードがあります。1から5のうち どれが適切でしょうか? let dispMessage = function(msg){ console.log(msg); }; 1. function(msg){console.log(msg);} は関数リテラルである。 2. dispMessage は関数リテラルである。 3. let dispMessage = function(msg){ console.log(msg); }; が
全体として関数リテラルである。 4. 全て関数リテラルとはいえない。 5. 関数リテラルとは、用法のことであり、 コード部分を表すものではない。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/531
532: デフォルトの名無しさん (ワッチョイ e67b-28F+ [153.178.229.141]) [sage] 2023/01/05(木) 14:53:38.67 ID:mmmJuCOb0 >>531 ぐぐったら以下の様に出る。結構理解しやすいと思うが。 リテラルとは リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のことである。 変数の対義語であり、変更されないことを前提とした値である。 プログラミング言語のコード中にリテラルが挿入される場合には、判別のために特定の書式を用いる必要がある。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/53
2
533: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 15:02:17.50 ID:EVXeoiyo0 うん。「リテラル」ということばによって惑わされてきた気がする。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/533
534: デフォルトの名無しさん (アウアウウー Sa6b-y47Y [106.155.3.231]) [sage] 2023/01/05(木) 15:06:19.08 ID:akcN5qw4a 関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃないの 正確な定義は構文木の定義を見れば書いてある http://mevius.5ch.net/test/read.cgi/tech/1659855460/534
535: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.232.21]) [sage] 2023/01/05(木) 15:10:13.35 ID:HxGsZjLmr >>531 1だろう let s = "abc"; の"abc"を文字列リテラルと呼ぶけどそれを代入した変数sを 文字列リテラルとは呼ばないでしょ http://mevius.5ch.net/test/read.cgi/tech/1659855460/535
536: デフォルトの名無しさん (オッペケ Sr4f-JZbg [126.208.238.17]) [sage] 2023/01/05(木) 15:28:42.13 ID:c7qQflpDr >>531 で、繰り返しになるけど本やサイトによっても説明がまちまちで MDN探しても出てこないような用語だからあまり囚われない方がいい 理解しようとして時間をかけるだけ無駄 http://mevius.5ch.net/test/read.cgi/tech/1659855460/536
537: デフォルトの名無しさん (ワッチョイ 9f63-uhAF [180.58.213.164]) [sage] 2023/01/05(木) 15:35:00.85 ID:m3Sm+5EJ0 >>531 強いて言えば1かな でも数値・文字列・正規表現リテラルみたいにプログラム中に単独で書くことは出来ないね 変数に代入するなり関数の引数に使うなりしないとエラーになる 英語でもfunction literalっていうみたいだけど関数リテラルってあんまりいい言葉だと思わないなあ 33; "hello"; /^js$/; function() {return true}; //SyntaxError こんなことにこだわるよりもっと基本的なこと勉強した方方がいいん
じゃないの? http://mevius.5ch.net/test/read.cgi/tech/1659855460/537
538: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 15:38:00.87 ID:EVXeoiyo0 あ。 誤解していたところがとけました。 当初は「2」かと妄信していたので、 だいぶ合点がとれました。 関数リテラルが無名関数と同義という説明も いやそうではないという説明も すっきりしました。 皆さん長々とお付き合いいただき ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/538
539: デフォルトの名無しさん (ワッチョイ 66db-TwI4 [217.178.96.73]) [sage] 2023/01/05(木) 19:28:05.49 ID:j61eMuZ00 >>511 技術評論社のjQuery本格入門はものすごく読みづらかった。 もっと分かり易い言葉で解説して欲しかった。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/539
540: デフォルトの名無しさん (ワッチョイ 8202-9yt5 [27.92.176.51]) [sage] 2023/01/05(木) 20:02:55.70 ID:EVXeoiyo0 >>534 >関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃない この発想というか常識が無かったなあ。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/540
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 462 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s