- 1 名前:デフォルトの名無しさん (オッペケ Sr9f-tek/ [126.254.232.20]) mailto:sage [2023/12/09(土) 17:40:39.92 ID:Mnb70srnr.net]
- !extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。 >>2-5のテンプレを読んだ上で質問してください。次スレは>>950が>>2の「次スレの立て方」を元に立ててください ■質問を書く上で (1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。 (2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。 (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など) (3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。 (4) 常に自発的に調べる心構えを持ってください。 具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。 わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。 (5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。 (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。 ※必ず「問題の事象が再現されること」を確認してください。 必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。 (7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。 (8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。 (9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。 (10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。 ■前スレ JavaScript の質問用スレッド vol.125 https://mevius.5ch.net/test/read.cgi/tech/1659855460/ VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
- 41 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 01:46:28.22 ID:9dULh+b20.net]
- >>38
実態からはかけ離れるけど、メソッドが1個しかないオブジェクトの特別な扱いだと捉えるとどうだろう? 関数を変数に代入できるというのは、C言語のような古いものでも関数ポインタという形で実現してる。 関数はそのコードがメモリ上に配置されていて、関数の呼び出しはそのメモリのアドレスにジャンプするという形で行われるけど、そのジャンプ先のアドレスを変数に入れる感じ。 JavaScript ではクロージャって概念でもっと高度だけど、代入された変数には結局その関数の在りかが紐づけられてる。
- 42 名前:デフォルトの名無しさん (スップ Sd42-MF53 [49.97.109.220]) mailto:sage [2023/12/21(木) 14:29:18.32 ID:0EYD168kd.net]
- やろうと思えば各要素に関数の入った配列を作れるってことが
- 43 名前:デフォルトの名無しさん (ワッチョイ 2279-F8eA [61.192.187.100]) mailto:sage [2023/12/22(金) 21:46:22.69 ID:nFOKM4xK0.net]
- LISP→Scheme→Javascriptという歴史的経緯があるのでそこから理解すると判りやすいかも
コードはLISPにとってはただのリストというデータ表現でしかなかったのでコードを変数に代入するというのはとても自然な事だった Schemeでレキシカルスコープが定義され一般的なクロージャの形になった 括弧だらけの構文は一般受けしないのでCっぽい構文のJavascriptが生まれた ざっくり書けばこういうわけです
- 44 名前:デフォルトの名無しさん mailto:sage [2023/12/23(土) 01:26:50.34 ID:ZuCxSQpj0.net]
- >>43
分かりやすいかなぁw
- 45 名前:デフォルトの名無しさん (ワッチョイ 131b-taje [2400:2200:395:6245:*]) mailto:sage [2023/12/23(土) 02:10:18.87 ID:YHpw3jwo0.net]
- 挙がってる各言語を知ってる人はなるほどと思うかもしれないけど
そうでないならただの遠回りな気が
- 46 名前:デフォルトの名無しさん mailto:sage [2023/12/23(土) 18:09:35.53 ID:87/jUj+m0.net]
- >>39-41は代入できますって以上の説明はできてないし
ショックを受けた38が知りたいのはそういう事じゃないんだろう Coders at WorkによればJavaacript設計者のブレンダン・アイクはSICPとSchemeの崇拝者で、 最初のアイデアはNetscapeブラウザにSchemeを持ち込むことだったとの事だよ まずはSICPでも読むといいんじゃないの
- 47 名前:デフォルトの名無しさん mailto:sage [2023/12/23(土) 18:34:01.16 ID:seU0bwIPM.net]
- 起源が知りたいわけじゃないと思うよ…
- 48 名前:デフォルトの名無しさん mailto:sage [2023/12/23(土) 18:43:21.05 ID:RHehsd3K0.net]
- 別に関数を変数に代入できるのはJavaScriptが初とか唯一ってわけじゃないからそこを掘り下げてもね
- 49 名前:デフォルトの名無しさん (ワッチョイ 3f79-Eb5K [61.192.187.100]) mailto:sage [2023/12/23(土) 20:16:48.44 ID:87/jUj+m0.net]
- >>47-48
起源というかね、こういうのは歴史的経緯を辿って理解した方が判りやすいという話よ 君らのつまらんレスを読むよりはずっとね Javascriptでやってる事は関数のポインタとはわけが違うんだから
- 50 名前:デフォルトの名無しさん (ワントンキン MMdf-llxg [153.248.8.149]) mailto:sage [2023/12/23(土) 20:22:17.26 ID:seU0bwIPM.net]
- >>49
それは絶対にない>わかりやすい
- 51 名前:デフォルトの名無しさん (ワッチョイ 7f95-UZ2u [240b:12:6820:b000:*]) mailto:sage [2023/12/23(土) 20:30:53.27 ID:1KvsNCZl0.net]
- 歴史を追いかけられるくらい論理的に文章組み立ててくれないか?
- 52 名前:デフォルトの名無しさん (ワッチョイ cfcf-x2Sm [153.206.76.80]) mailto:sage [2023/12/23(土) 20:34:16.96 ID:6J3b/0Sr0.net]
- >Javascriptでやってる事は関数のポインタとはわけが違うんだから
LISPが違うのはわかるけどJavaScriptは関数ポインタとそんなに違うんだっけ?
- 53 名前:デフォルトの名無しさん (ワッチョイ 3f48-taje [2400:2200:39a:a839:*]) mailto:sage [2023/12/23(土) 20:55:11.83 ID:RHehsd3K0.net]
- >>49
賛同されなかったからつまらんレスとか言い出すのは大人げないよ
- 54 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 14:20:26.14 ID:eKX/4s7na.net]
- >>52
だいぶ違うぞ クロージャって言葉知ってる? 定義された場所のローカル変数を参照できるの そしてローカル変数がクロージャによってキャプチャされたら その変数はクロージャが死なない限りずっと保持される これは関数ポインタとは訳が違う そしてそれこそがscheme信者のアイクが取り入れたかったもの クロージャじゃないなら関数ポインタと大して変わらんっちゃ変わらん
- 55 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 15:20:54.55 ID:D70pmwho0.net]
- >>54
関数がクロージャを形成するかどうかと 関数を受け渡すときに関数へのポインタを使ってるかどうかは直交した別の問題 実際どのJavaScriptエンジンも関数へのポインタを使って変数への代入や関数の受け渡しを実現している C言語はクロージャをサポートしないのでC言語の関数ポインタを使ってもクロージャにはならないのは当たり前 もう少し言えば関数を受け渡し可能にするためのスコープ解決の仕組み/ルールと受け渡す際に関数へのポインタを使ってるかどうかは別の問題
- 56 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 15:53:19.34 ID:D70pmwho0.net]
- 別スレで見かけたトンデモ記事書いてる人だと思うけどレキシカルスコープの話と第一級関数の話とレキシカルスコープを使ったクロージャによって第一級関数を実現する話を混同してるんじゃないか
Schemeはレキシカルスコープを使ったクロージャという考え方を広く普及させた言語ではあるがレキシカルスコープや第一級関数はScheme以前の昔から実現されてたものだし レキシカルスコープを使ったクロージャもScheme以前の昔からあった考え方 Schemeが初めてレキシカルスコープを定義したかのように書くのはやめよう
- 57 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 16:19:26.43 ID:+dT+Yo8pd.net]
- >>56
ちょっと指摘させてもらうと 誰も起源の話なんてしてないよ
- 58 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 16:48:55.22 ID:awd0q31Fa.net]
- >>56
いや別に起源とかはどうでも良くて関数ポインタとは違うよって話をしてるだけなんだけど
- 59 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 18:14:29.42 ID:uJ8b4azy0.net]
- >>57
>>43がしてるでしょ この人同じように間違ったことをあちこちで書いてるから指摘しただけ
- 60 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 19:40:11.40 ID:3LVtZ1UM0.net]
- 彼は命題論理が理解できなくて、120年前の古文書まで読み返して、それでも分からなくて200年前の哲学書まで遡った結果、今でも命題論理が分かってないって人間だから、彼の歴史的経緯を遡れば理解しやすくなるって主張は実は彼自身によって反証されてたりする
- 61 名前:デフォルトの名無しさん mailto:sage [2023/12/24(日) 22:35:22.54 ID:ietP5AWI0.net]
- >>38 が分かりやすかったかどうか答えてくれれば解決だな
- 62 名前:38 (ワッチョイ bf74-uzyf [211.124.81.22]) [2023/12/24(日) 23:33:56.01 ID:M3Ha8RQ30.net]
- さっぱり分からん
- 63 名前:デフォルトの名無しさん (ワッチョイ cfb1-llxg [2400:4050:afe0:3700:*]) mailto:sage [2023/12/24(日) 23:38:36.92 ID:3LVtZ1UM0.net]
- おっIP同じやし38本人やん
まあそうだよな。あの説明でわかりやすく人間なんておらんやろ
- 64 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 06:04:30.08 ID:G5r1XQvR0.net]
- クロージャは第一級市民関数。
関数外のローカル変数などの文脈を取り込む。 つまり、スコープがゆるい 一方、Ruby の関数はスコープがきつくて、 関数外のローカル変数を通さないので、第一級関数ではない。 ただし、ブロックはブロック外のローカル変数を通すから、クロージャ 他に、レシーバーとメソッドを持ち運ぶ、メソッドオブジェクトもある
- 65 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 08:32:20.98 ID:xnbzJK+y0.net]
- >>38,62
何がどうわからないのか、を詳しく説明してくれ。 具体的なところがさっぱり分からん。
- 66 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 21:05:49.32 ID:HhwD874b0.net]
- そりゃそもそもLISPやSchemeを全く知らない人だったんでしょ
分かりやすくなる要素なんて1ミリもないわな
- 67 名前:デフォルトの名無しさん mailto:sage [2023/12/25(月) 21:28:48.99 ID:XllulW5ca.net]
- struct Closure {
struct Env env; struct Function func; }; Closureの最もシンプルな実装 Envはキャプチャしたローカル変数を保持する環境 Functionは関数ポインタやらを保持してるオブジェクトだと思ってくれ たったこれだけのことに過ぎない 関数ポインタにenvが追加されただけのものだ
- 68 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 01:40:31.83 ID:XlP1bh7b0.net]
- クロージャやレキシカルスコープがどうやって実現されてるかという質問なら[[Environment]]のことを教えてあげるのはいいと思うけど
そういう話は誰もしてないからねぇ
- 69 名前:デフォルトの名無しさん mailto:sage [2023/12/26(火) 12:17:20.00 ID:iZHdB3Jl0.net]
- 結局のところ>>38の問題って関数は変数に代入できないものだっていう固定観念を他の言語に持ち込んでるところだと思う
プログラミング言語なんて所詮ヒトがそれぞれの都合で作ったものであって言語が違えば考え方や常識も違う そこを理解して他の言語の固定観念を持ち込まないようにしないとこの先もしっくりこないこと、受け入れられないことだらけだろう
- 70 名前:デフォルトの名無しさん (ワッチョイ efc9-l39z [2001:240:247c:3ea8:*]) mailto:sage [2023/12/26(火) 18:41:41.07 ID:DtaEhUmP0.net]
- 関数を変数に直接代入できないCの系譜の言語が最も広く普及してるから
そういう言語をやってきた人が関数を変数に直接代入できる言語に初めて接したら>>38のように驚くのは極々自然のこと 何が固定観念なのかなんてそれが覆るまで分からないんだから固定観念を持ち込むなとか言っても何の役にも立たないよ
- 71 名前:デフォルトの名無しさん (ワッチョイ 3f27-taje [2400:2200:391:e73b:*]) mailto:sage [2023/12/26(火) 19:02:16.70 ID:ar+aUrwZ0.net]
- 今回のことで固定観念だったと気づければそれでいいと思うよ
そうすれば次からは疑ってかかることができるわけだし
- 72 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 08:36:00.72 ID:kvxPBg+iM.net]
- 糞長い式が真値のときだけ変数に代入したくて
if (糞長い式) { X = 糞長い式 } と書いてるんですが糞長い式を一度で済ますにはどうしたらいいですか
- 73 名前:デフォルトの名無しさん [2024/01/05(金) 09:10:31.40 ID:PLcvVAqJ0.net]
- >>72
いますぐ糞をして寝ることだ。 糞!
- 74 名前:デフォルトの名無しさん [2024/01/05(金) 09:12:10.60 ID:PLcvVAqJ0.net]
- X = 糞長い式 ? 糞長い式2 : X;
- 75 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 09:26:22.59 ID:B0YNzjLy0.net]
- Y = 糞長い式
if (Y) { X = Y }
- 76 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 09:52:24.63 ID:UVxCqy8T0.net]
- 2回評価したくないときもあるし>>75
https://docs.python.org/ja/3/whatsnew/3.8.html#assignment-expressions そこまで糞長くないならセイウチ演算子
- 77 名前:デフォルトの名無しさん mailto:sage [2024/01/05(金) 11:11:29.09 ID:j+cl8so10.net]
- X = 糞長い式 || X;
わかりやすい>>75でいいと思うわ
- 78 名前:デフォルトの名無しさん (ワッチョイ efbb-bJ3A [240f:108:3018:1:*]) mailto:sage [2024/01/05(金) 18:15:32.86 ID:xFVV62H30.net]
- カルノー図やクワイン・マクラスキー法で書けないほど複雑だと
どうにもならない if else if else にうまく展開するか switch 文をうまく使うとかかなあ
- 79 名前:デフォルトの名無しさん (ワッチョイ fd9f-stEI [122.133.203.183]) [2024/01/08(月) 08:24:08.50 ID:HV7sMHf30.net]
- 質問させていただきます。
タグの属性onclick等で設定したイベント処理では 処理側の関数ではeventオブジェクトを参照出来ないのでしょうか? 色々探してるのですが見つけられなくて・・・よろしくお願い致します。
- 80 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 10:20:56.34 ID:FNFcnj+v0.net]
- >>79
onclick属性のイコールの右側にある値は無名関数をそのままラップしたもので、eventオブジェクトはその関数の第一引数に渡される つまり<タグ onclick="func(arguments[0]);">とすれば取得できる
- 81 名前:デフォルトの名無しさん (ワッチョイ 8d43-iBaE [114.148.50.247]) [2024/01/08(月) 10:51:13.68 ID:adS5ZNXz0.net]
- >>79
引数で渡されてくるけど? HTMLのタグの中に書く事例では意味も解らずその引数を省略しているのが多い それより、今どきはHTMLと分離した、こっちの書き方がおすすめ https://developer.mozilla.org/ja/docs/Web/API/Element/click_event
- 82 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 13:07:07.19 ID:cXOMuDOl0.net]
- >>79
onclick属性値の中でもeventは使える。 <p onclick="console.log(event);"> ところで、「処理側の関数」とは?
- 83 名前:デフォルトの名無しさん mailto:sage [2024/01/08(月) 13:58:47.00 ID:pIW6TUAd0.net]
- ブラウザの開発者ツールにあるデバッガをつかえば気づける
止めたところの環境が丸見えになるから
- 84 名前:デフォルトの名無しさん (ワッチョイ fd2e-dvWY [2001:268:9a3d:8302:*]) mailto:sage [2024/01/08(月) 20:55:54.87 ID:gJaMg8aw0.net]
- 例えば、jQuery なら、これで5つのキーのkeydown をキャッチできる
$( function ( ) { $( 'body' ).keydown ( function( e ) { switch( e.key ) { // 32:空白、37:←、38:↑、39:→、40:↓ case " " : case "ArrowLeft" : case "ArrowRight" : case "ArrowUp" : case "ArrowDown" : console.log( e.key ); } } ) } );
- 85 名前:デフォルトの名無しさん (ワッチョイ 434b-NOlf [240b:12:6820:b000:*]) mailto:sage [2024/01/08(月) 21:08:17.54 ID:Jg6SbkUr0.net]
- <button onclick="hoge(this)">ってやると意図しない動きすることあるからルールで禁止してるところもあるよね
- 86 名前:デフォルトの名無しさん [2024/01/11(木) 09:49:12.76 ID:L0eqWFW50.net]
- 子要素は含まないようにelementを取得するにはどうすればいいですか?
これだとテーブルの中のフォームをスライドさせてもalertが表示されてしまいます。 子要素は含まないテーブルのみのelementを取得することはできますか? <table style="width:500px;height:300px;background:#ffff00" id="aaa"> <tr><td><input type="range" style="width:inherit"></td></tr> </table> <スクリプト> const elm = document.getElementById("aaa"); elm.addEventListener( "mousedown", function(e){alert("www");} ); </スクリプト>
- 87 名前:デフォルトの名無しさん (ワッチョイ b536-QPx5 [2400:4052:5062:9ff0:*]) [2024/01/11(木) 10:30:37.07 ID:8+5yXztZ0.net]
- 何をやりたいのかがわからない説明
とりあえずプログラムを意識せずに やりたいことの要件を日本語でよろしく
- 88 名前:デフォルトの名無しさん (ワッチョイ 2319-dvWY [2001:268:c0d0:700e:*]) mailto:sage [2024/01/11(木) 10:35:49.26 ID:oja63d6W0.net]
- function(e){
// input要素以外をクリックした場合の処理 if (e.target.tagName !== 'INPUT') { alert("www"); } }
- 89 名前:デフォルトの名無しさん (ワッチョイ 0510-zseD [180.12.82.129]) [2024/01/11(木) 13:03:40.31 ID:L0eqWFW50.net]
- >>87
子要素を除外したelementを取得したいってことっす >>88 ありがとうございます試してみます
- 90 名前:デフォルトの名無しさん [2024/01/11(木) 14:18:15.97 ID:8+5yXztZ0.net]
- それ、バブリングを意識しないとダメかもよ
- 91 名前:デフォルトの名無しさん [2024/01/11(木) 14:44:36.31 ID:bfPtSoSL0.net]
- 先ほどは手元にソースコードがなかったので即席で質問してしまいました。
やりたいことはテーブル部分でタッチムーブしたときブラウザのスクロールを禁止にしたいのですが、 テーブルにあるスライダーまでロックされて動かせないようになってしまうので、 スライダーを除外したテーブル部分のelementだけ取得できれば上手くできるのでは?と思ったから先ほどのような質問をしてしまいました。 ようするにブラウザのスクロール禁止にするけどスライダーは動かせるようにしたいんです。 <table style="width:500px;height:300px;background:#ffff00" id="aaa"> <tr><td><input type="range" step="1" min="0" max="10" value="1"></td></tr> </table> <スクリプト> const elm = document.getElementById("aaa"); elm.addEventListener( "touchmove", function(e){ e.preventDefault(); //ブラウザのスクロールを禁止にする } ); </スクリプト>
- 92 名前:デフォルトの名無しさん mailto:sage [2024/01/11(木) 15:08:55.09 ID:k0wEY4GK0.net]
- よく分からんが、cssでそんなのがあるな
https://developer.mozilla.org/ja/docs/Web/CSS/overscroll-behavior
- 93 名前:デフォルトの名無しさん mailto:sage [2024/01/11(木) 16:34:13.87 ID:tWeEPqJO0.net]
- >>91
preventDefault()をstopPropagation()に変えるだけでいいかもしれない この場合は多分preventDefault()はいらない
- 94 名前:デフォルトの名無しさん [2024/01/11(木) 22:20:25.19 ID:vnpK4WpS0.net]
- clickやmousedownに仕込む話したど思ったのでバブリングを指摘したけれど
スマホの場合にスライダー操作でスクロールしちゃうのを止めたい場合の話なら別問題 スクロールはブラウザ側の仕組みでDOMのイベントバブリングを止めてもダメ それとターブルじゃなくて、スライダーをtouchmoveしたときにスクロールを止めたいのじゃないですか 要件としては スライダーのtouchstartでブラウザのスクロール機能を無効にして スライダーのtouchendでブラウザのスクロール機能を有効に戻す スクロールの有効・無効は、スクロール要素のcssのスタイルで制御できるので、JavaScriptでstyle要素のoverflowYまたはoverflowXを'hidden'または'auto'と値を切り替える
- 95 名前:デフォルトの名無しさん [2024/01/11(木) 22:41:54.15 ID:bfPtSoSL0.net]
- >>93
ありがとうございます。 スライダーのelementにe.stopPropagation()をしたらスライダーを動かせるようになりました >>94 ありがとうございます。試してみます。
- 96 名前:デフォルトの名無しさん [2024/01/13(土) 03:22:15.94 ID:bBKen2/T0.net]
- すいません、vueの質問はここでいいですか?
- 97 名前:デフォルトの名無しさん mailto:sage [2024/01/13(土) 11:42:05.46 ID:sUiBS1y50.net]
- ↓あたりにどうぞ
JavaScriptフロントエンド総合 Part.11 https://mevius.5ch.net/test/read.cgi/tech/1660898820/ Vue vs React vs Angular vs Svelte Part.11 https://mevius.5ch.net/test/read.cgi/tech/1660969032/
- 98 名前:デフォルトの名無しさん (ワッチョイ ad01-1c9G [126.168.252.135]) [2024/01/14(日) 17:21:53.60 ID:vAN1c9wS0.net]
- ありがとうございます
- 99 名前:デフォルトの名無しさん mailto:sage [2024/01/26(金) 17:25:13.36 ID:2+81uqBd0.net]
- WebフロントエンドでのJavaScriptを勉強中です
「jQueryでできることは素のJSでもできるのがほとんどになったから、jQuery不要」という話しが出てきますが、 エレメントの操作などで、素のJSだと記述する文字が長く、jQueryだとすごく短く書けるので、それだけでも十分便利と感じています。 document.querySelector('selector') ⇒ $('selector') jQuery不要の場合、効率良く書くために代わりに何を使っているのか気になります。 大型のフレームワークとかでしょうか?フレームワーク使うと、ここのエレメントの参照・操作などはもはや不要になるのでしょうか?
- 100 名前:デフォルトの名無しさん mailto:sage [2024/01/26(金) 19:57:32.14 ID:vs+8Yc4d0.net]
- jQueryの技術覚えてもjQueryにしか使えない。素のJS技術はどんなフレームワーク使っても役に立つ
- 101 名前:デフォルトの名無しさん mailto:sage [2024/01/26(金) 20:11:15.77 ID:Uafucq2BM.net]
- >>99
コード補完機能(任意のスニペット呼び出しを含む)のある現代のエディタではその全てをキータイプする必要は無いし、どうしても短く書きたいならショートハンドを定義すればいい たとえば、5ch互換掲示板ビューアであるブラウザ拡張機能「read.crx 2」では、同拡張機能の共同メンテナの方が作成したjQueryライク(互換ではない)なショートハンドライブラリ「shortQuery.js」が使われてる(だいぶ前にいわゆる「脱jQuery」のお供として導入されたハズ) なんにせよ、初心者が今からjQueryを学ぶのは悪手
- 102 名前:デフォルトの名無しさん mailto:sage [2024/01/26(金) 20:12:23.71 ID:Z5KyuX5d0.net]
- 素のjs分からずにjquery使えるわけないだろ
- 103 名前:デフォルトの名無しさん (ワッチョイ 433e-K/rq [2400:2200:7d4:c4d1:*]) mailto:sage [2024/01/26(金) 21:41:55.02 ID:bxMKu9aD0.net]
- >>99
その通り ReactやVueに代表されるような昨今のフレームワークは開発者がDOMを直接操作しない
- 104 名前:デフォルトの名無しさん (ブーイモ MM43-kvtp [49.239.68.29]) mailto:sage [2024/01/26(金) 21:48:25.16 ID:KJ09lp1IM.net]
- そう思ってるとこんなん当然知ってますよねみたいなノリでevent処理とかrefとか出て詰むゾ
- 105 名前:デフォルトの名無しさん mailto:sage [2024/01/28(日) 11:39:44.53 ID:WhNL7KNN0.net]
- >>99
jQueryの現在はHPフロントエンジニアさんが 抱負なライブラリでHPに花をそえるために使っているだけ ウェブアプリ屋さんはjQueryが邪魔くさい時があるので使わない どの分野を目指すのかが決まっているなら その分野で何が主流なのかを見極めたほうがいい
- 106 名前:デフォルトの名無しさん mailto:sage [2024/01/28(日) 19:30:17.30 ID:1z8oB9tQ0.net]
- 動的に作られる特定の要素にだけイベント追加するのがラク
jQueryがバニラJSに勝ってる唯一の点だけど、そういう処理を入れるくらいDOMの操作使ったアプリ作るなら他のフレームワークのほうが良いだろう
- 107 名前:デフォルトの名無しさん mailto:sage [2024/01/28(日) 20:16:55.07 ID:9hZosd/l0.net]
- ゆうて古から続くjqueryの資産はいたる所にあるから、読めることくらいは出来ないとな
難しいもんではないんだし
- 108 名前:デフォルトの名無しさん mailto:sage [2024/01/28(日) 23:52:21.72 ID:Plt7vTfv0.net]
- >>106
バニラでも祖先ノードでmatches(selectors)を使えば対応可能なので、それほどjQueryに優位性はない気がする。 それから、jQueryはバブリングフェースのみ対応という弱点がある。 バブリングしないイベントタイプに関してはaddEventListener()に優位性がある。
- 109 名前:デフォルトの名無しさん mailto:sage [2024/01/29(月) 01:34:06.63 ID:fIBxeYXl0.net]
- 他から持ってきたコードが指すjQueryが最近のじゃなくて
だれが互換性担保するのってのが一番困る jQueryを直接つかう分には検証できるけど 依存しているライブラリは採用せんでほしい
- 110 名前:デフォルトの名無しさん (ワッチョイ f95a-w/9U [2400:4052:5062:9ff0:*]) [2024/01/30(火) 09:12:09.86 ID:GdANFjKZ0.net]
- jQuery使いの人は行き当たりばったりな人が多い
jQueryライブラリファイルの読み込みが沢山あってなんじゃこりゃみたいな
- 111 名前:デフォルトの名無しさん mailto:sage [2024/01/30(火) 11:06:06.79 ID:kUs11O+K0.net]
- jQueryが出た頃はSelectors APIもなかったからな
行き当たりばったりというより昔の標準APIが貧弱でライブラリに頼るしかなかった
- 112 名前:デフォルトの名無しさん (ワッチョイ 99d1-NbCu [2001:268:9a89:2571:*]) mailto:sage [2024/01/31(水) 00:18:29.61 ID:Z4CJtIhd0.net]
- jQuery は短く書けるので、ちょっとしたデモには良い。
でも、React, Vue.js では使わない Bootstrap も、5 からは使わない。 popper.js に変わった
- 113 名前:デフォルトの名無しさん mailto:sage [2024/01/31(水) 08:00:03.26 ID:8Xe2gISY0.net]
- >>110
しかもバージョンがところどころ違ったり読込先や仕方が違ったりする
- 114 名前:デフォルトの名無しさん mailto:sage [2024/02/03(土) 01:34:02.49 ID:VXfZdpMe0.net]
- >>99
■jQueryの良さは健在だが…… 機能のある程度はES2015で代替出来るが jQueryの良さは健在、そこはお前さんの言ってる通り それとは全く別の話 手続き型的な手法でDOMを触ってるのが前時代的 ■DOMを触るのが不味い理由 DOM作り直しは要素の改ざんな訳だ DOMを更新するためには、探索して選択、それを作り変えるの2ステップがあるけど 別の機能がDOMを消したり書き換えたら 見つけられなくてエラー出るかも知れないよね? 選択できても改ざんされてて加工出来ずにエラー吐くかも知れないよね? 担保するのは全て貴方の目視テスト 10機能作ったら10x9の90通りのマトリックステスト作ってね このように機能を作る度にnの2乗みたいなテストを目視でさせられる 全部で100機能作りましょうとかなるとありえん無理 ■代替はJSフレームワーク HTML作るテンプレートエンジンでsmartyやBlade、pugとか色々あるけど あんな感じでDOMを生成する何かを用意しておいて JS内で変数が変更されたのを検知して、勝手に新しいDOMツリーを作り直して嵌め込んでくれよって思わん? その思想で作られてるのがReactやVue、Angular等のJSフレームワーク JSフレームワークが用意した「変数の変更通知を行う」お作法を覚えて動かすとDOMが常に最新のあるべき姿になる これによりDOM操作回りはJSフレームワークという外部の業者が全て責任持ってやってくれる 俺達はDOMの元であるテンプレートを読み込ませたら ただ変数がちゃんと正しい値になってるか?を保証すれば完璧に動作するよね 変数書き換えたら常にあるべき姿のDOMに書き換わるシステムに、jQueryで改ざんし始めると衝突して邪魔になる 次のDOM更新でjQueryが書き換えた内容そっくり消えるしな だからこれからのWeb開発にjQueryは不要なんだよ 決してES2015が優れてて代替出来るから不要になったという話では無い
- 115 名前:デフォルトの名無しさん (ワッチョイ 13ad-IeYv [61.26.38.34]) mailto:sage [2024/02/03(土) 06:58:45.76 ID:hL2W++6M0.net]
- 変数更新してるだけに見えて、別処理が勝手に動くというのも実はアレだけどな
今はリアクティブが流行してるからそこにケチつける風潮ないけれど
- 116 名前:デフォルトの名無しさん (ワッチョイ 1901-fC/B [60.88.91.184]) mailto:sage [2024/02/03(土) 10:15:49.25 ID:HeN++Rh50.net]
- >>99 (ワッチョイ 4d7c-MQtI [122.212.16.94])
これだけ回答をもらって無反応か 最近の質問者はこういう人が多いな
- 117 名前:デフォルトの名無しさん (アウアウエー Sae3-P9+J [111.239.175.167]) mailto:sage [2024/02/03(土) 10:49:13.33 ID:YZYv2rY+a.net]
- 反応欲しいなら知恵袋にしとけって
- 118 名前:デフォルトの名無しさん mailto:sage [2024/02/04(日) 02:28:25.82 ID:ipvGCo7I0.net]
- JavaScriptで作れるプログラムって、webブラウザ以外になにかありますか?
全然ユーザーがいないのはダメだけど ある程度需要がありそうな用途
- 119 名前:デフォルトの名無しさん mailto:sage [2024/02/04(日) 03:05:45.75 ID:w9OYnB1OM.net]
- >>118
WebブラウザとWebページを区別できるようになろう
- 120 名前:デフォルトの名無しさん mailto:sage [2024/02/04(日) 05:18:25.36 ID:7DDGpERD0.net]
- でもまあwebブラウザが全てではあるよね
他に出番無いし
- 121 名前:デフォルトの名無しさん mailto:sage [2024/02/04(日) 07:00:09.01 ID:wRU34d220.net]
- 今はNode.jsでサーバ側もJSってこともある
- 122 名前:デフォルトの名無しさん (ワッチョイ bd43-tydm [114.148.57.9]) [2024/02/04(日) 10:50:30.37 ID:Vls4Se8V0.net]
- そうだね
node.jsでJavaScriptはサーバサイドだけじゃくてデスクトップアプリでも使われている 代表格はVScode(node.js+Electron)がある Webpackもnode.jsだし 身近なところでは汎用掲示板ビューアSikiがnode.js+ElectronでJavaScriptだね
- 123 名前:デフォルトの名無しさん (ワッチョイ 85a1-aUy2 [240b:12:203:6300:* [上級国民]]) mailto:sage [2024/02/04(日) 12:44:47.52 ID:ieWwGMGa0.net]
- CSSもHTMLも生で書くのは平成だしな
普通SASSやらPugやら使うだろ JSだってWebpackやらBrowserify越しに使うやろ まぁNode.jsじゃトランスパイル遅いから GOやRustのツールに置き換える流れにはなってるが じゃあ最初からCやGO、Rustでやれば良かったよねとはならないフットワークの軽さがNode.jsにはあるからな
- 124 名前:デフォルトの名無しさん (ワッチョイ 1b47-JMKI [2001:240:2462:f08:*]) mailto:sage [2024/02/04(日) 12:55:11.06 ID:m4gIKl+m0.net]
- Rustで書いたJSトランスパイラは速いけどRust自体のコンパイルは遅い
- 125 名前:デフォルトの名無しさん mailto:sage [2024/02/04(日) 23:16:57.06 ID:/yrx0E0+0.net]
- あることをローカルマシンでやりたくて、Python入ってっから、それでやろうとしたらできなくて(いや正確にはすごく遅い)Node.jsになってしまった。何かは言わない。
- 126 名前:デフォルトの名無しさん [2024/02/05(月) 09:44:15.86 ID:Q9Y3g4UN0.net]
- node.jsの良さはJavaScriptでプログラミングできる事
Electron使えばUIもHTMLで書けるので便利 なれたらJavaScriptでデスクトップアプリを書くのが楽しくなった
- 127 名前:デフォルトの名無しさん (ワッチョイ abcf-aUy2 [2001:240:242f:19bc:* [上級国民]]) mailto:sage [2024/02/05(月) 15:57:34.49 ID:thNH7tNN0.net]
- >>126
Electronはファイルがデカいから 俺が何か作る時はCLI一択だわ 対話的な物作る時は Tauriで作ってみたいなぁと思う
- 128 名前:デフォルトの名無しさん mailto:sage [2024/02/05(月) 18:19:30.64 ID:1m9RfVzn0.net]
- >>118
Visual Studio Codeがjavascriptで作られている
- 129 名前:デフォルトの名無しさん mailto:sage [2024/02/05(月) 19:17:51.68 ID:+Fh+RIwSa.net]
- vscodeが糞な理由が分かった気がした
- 130 名前:デフォルトの名無しさん (ワッチョイ 436c-OKLl [240b:12:6820:b000:*]) mailto:sage [2024/02/06(火) 07:31:11.51 ID:JsprpZ5q0.net]
- ElectronとAngularで作られてるシステム見させてもらったんだけど、reactに書き換えるって言ってたな
ならnativeでよくね?
- 131 名前:デフォルトの名無しさん mailto:sage [2024/02/06(火) 14:51:45.98 ID:nsw90RpoM.net]
- reactとreact nativeって書き換えが必要なの?
ゴミかな?
- 132 名前:デフォルトの名無しさん [2024/02/06(火) 15:07:15.20 ID:4bvVpi0E0.net]
- >>0127
TauriはWebViewなので Electronの様にWebRequestを簡単に操れない Rustに拘らないのなら 使い慣れた開発言語でWebViewを組み込んだ方が手っ取り早い
- 133 名前:デフォルトの名無しさん mailto:sage [2024/02/07(水) 01:01:55.81 ID:8Eizk2eA0.net]
- YouTube 動画で見たけど、
北米では、Flutter よりも、React Native が多いらしい
- 134 名前:デフォルトの名無しさん [2024/02/07(水) 10:23:32.40 ID:Q0zrTHJg0.net]
- JavaScriptで書ける環境の話から
かなり脱線気味
- 135 名前:デフォルトの名無しさん (ワッチョイ 3743-5kwM [60.32.26.124]) mailto:sage [2024/02/11(日) 13:06:38.03 ID:4EmF6N4v0.net]
- 業務がWebアプリなのは危険だと言い出した管理職がいて
Electronでチャチャとデスクトップソフト風にしたら 仕事が早いとお褒めいただいたw 何も変わっちゃいなんだけれどそれはナイショ
- 136 名前:デフォルトの名無しさん [2024/02/11(日) 14:27:08.42 ID:cAyMWgFh0.net]
- 危険だという懸念が素人の無理解から来てるだけなのか妥当な懸念なのか分からないから何とも言えんな
前者なら悪くない回避策
- 137 名前:デフォルトの名無しさん mailto:sage [2024/02/11(日) 21:47:35.74 ID:VNWSIW9O0.net]
- ブラウザのアドインに情報吸われる危険性は下がるね
- 138 名前:デフォルトの名無しさん (ワッチョイ 2279-8TQs [61.192.207.171]) mailto:sage [2024/02/11(日) 23:27:36.16 ID:Z05z2D4x0.net]
- まあ一般的に考えて危険やな
その認識は正しいさすが管理職
- 139 名前:デフォルトの名無しさん mailto:sage [2024/02/12(月) 12:55:25.07 ID:3q7oTZTX0.net]
- 管理職が正しい
どんなに堅牢なシステムでも狙われたら終わり だから今はクラウドじゃなくてオンプレ回帰してる
- 140 名前:デフォルトの名無しさん mailto:sage [2024/02/12(月) 15:27:53.80 ID:2z81MgsB0.net]
- もうネット使うなよ
- 141 名前:デフォルトの名無しさん mailto:sage [2024/02/12(月) 15:53:51.52 ID:BAGnA5Sa0.net]
- Access でいいよ
|
|