!extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。次スレは>>950が>>2の「次スレの立て方」を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://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
探検
JavaScript の質問用スレッド vol.126
1デフォルトの名無しさん (オッペケ Sr9f-tek/ [126.254.232.20])
2023/12/09(土) 17:40:39.92ID:Mnb70srnr21デフォルトの名無しさん (ワッチョイ 0e6d-Aq9B [240b:10:8401:ab00:*])
2023/12/16(土) 19:13:30.08ID:UfR4i5aB0 設計ミスだから使い分ける必要はなく
外部とのやりとり以外にnullは使わないと統一した方が問題でにくいし楽
外部とのやりとり以外にnullは使わないと統一した方が問題でにくいし楽
22デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/18(月) 12:29:54.63ID:UBFKxLGp0 配列の宣言はvar list=[];
オブジェクトの宣言var obj={};
配列の配列の宣言は var list=[[]];
ではオブジェクトの配列の宣言はどうすればいいですか?
var obj={[]};のようにしてもできませんでした。
obj["aaa"][0]=100;
obj["bbb"][1]=200;
のように値を入れたいです。
オブジェクトの宣言var obj={};
配列の配列の宣言は var list=[[]];
ではオブジェクトの配列の宣言はどうすればいいですか?
var obj={[]};のようにしてもできませんでした。
obj["aaa"][0]=100;
obj["bbb"][1]=200;
のように値を入れたいです。
23デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/18(月) 12:38:38.33ID:UBFKxLGp0 配列のオブジェクトって言った方が正しいのかわからないけど
とにかく>>22のように代入したいんです
とにかく>>22のように代入したいんです
24デフォルトの名無しさん (ワッチョイ 0e2a-YOgt [240b:10:8401:ab00:*])
2023/12/18(月) 12:58:21.29ID:kn95Gf6w0 [[]] 配列を入れ子にしても1番目の要素を[]に初期化しているだけで
配列として使いたい場合に必要な手順ではない
仮に1番目を[1,2]、2番目を[3]にしたい時に操作が変わってしまうので邪魔なだけ
配列は空のまま [] で十分
あとconst/letじゃなくvarで書くスタイルは古い
参考にした情報があるなら忘れよう
更新もせずずっと放置しているなら害悪でしかない
配列として使いたい場合に必要な手順ではない
仮に1番目を[1,2]、2番目を[3]にしたい時に操作が変わってしまうので邪魔なだけ
配列は空のまま [] で十分
あとconst/letじゃなくvarで書くスタイルは古い
参考にした情報があるなら忘れよう
更新もせずずっと放置しているなら害悪でしかない
25デフォルトの名無しさん (ワッチョイ 225c-ivtJ [61.196.5.7])
2023/12/18(月) 13:13:46.30ID:BJv/M26K0 let obj = {};
obj["aaa"] = [100];
obj["bbb"] = [undefined];
obj["bbb"][1] = [200];
obj["aaa"] = [100];
obj["bbb"] = [undefined];
obj["bbb"][1] = [200];
26デフォルトの名無しさん (ワッチョイ 225c-ivtJ [61.196.5.7])
2023/12/18(月) 13:15:33.46ID:BJv/M26K0 obj["bbb"][1] = 200;
27デフォルトの名無しさん (ワッチョイ 4f61-3PPy [180.23.197.208])
2023/12/18(月) 13:42:57.71ID:WXLOngT30 const obj = {
aaa: [100],
bbb: [, 200]
};
aaa: [100],
bbb: [, 200]
};
28デフォルトの名無しさん (ワッチョイ 5bd1-r/Us [2400:2200:738:48fd:*])
2023/12/18(月) 14:17:37.97ID:oIHu3KbV029デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/18(月) 18:21:51.41ID:UBFKxLGp0 >>24-28
ありがとうございます
ありがとうございます
30デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/18(月) 23:55:35.85ID:UBFKxLGp0 オブジェクトのkeyにelementを使うのは不具合になりますか?
const element = document.getElementById("test_id");
const element2 = document.getElementById("test2_id");
let obj ={};
obj[element] = 200;
obj[element2] = 300;というような感じです
一応動作はしたけどやらないほうがいいんですか?
const element = document.getElementById("test_id");
const element2 = document.getElementById("test2_id");
let obj ={};
obj[element] = 200;
obj[element2] = 300;というような感じです
一応動作はしたけどやらないほうがいいんですか?
31デフォルトの名無しさん (ワッチョイ c73f-r/Us [2400:2200:736:eb7f:*])
2023/12/19(火) 00:19:13.16ID:ny/Z19vi0 >>30
本当に期待通りに動いてるかしっかり確認した?
本当に期待通りに動いてるかしっかり確認した?
32デフォルトの名無しさん (ワッチョイ 0343-Qk2W [2001:268:9a84:9fef:*])
2023/12/19(火) 00:31:33.88ID:z6V4TATi0 const element = 何々
で、elementがオブジェクトなら、キーに使ってはならない。
primitive なら、キーに使える
この表記は、constがついていても、
そのオブジェクトの中身・内容は変えられるから、
本当の意味のconstではない
Ruby では、オブジェクトをfreeze すると、浅い第1階層で変更できなくなる。
変更できなくなった部分に、次の第2階層のオブジェクトがあれば、そこは変更できる!
だから完全に深い階層まで、再帰的にfreezeしないと、
本当の意味でfreezeにならない
>>20
undefined はユーザーが作り出せないものだから、
普通は空を表すのに、null を使う
Rubyのnil と同じ
で、elementがオブジェクトなら、キーに使ってはならない。
primitive なら、キーに使える
この表記は、constがついていても、
そのオブジェクトの中身・内容は変えられるから、
本当の意味のconstではない
Ruby では、オブジェクトをfreeze すると、浅い第1階層で変更できなくなる。
変更できなくなった部分に、次の第2階層のオブジェクトがあれば、そこは変更できる!
だから完全に深い階層まで、再帰的にfreezeしないと、
本当の意味でfreezeにならない
>>20
undefined はユーザーが作り出せないものだから、
普通は空を表すのに、null を使う
Rubyのnil と同じ
33デフォルトの名無しさん (ワッチョイ 4f61-3PPy [180.23.197.208])
2023/12/19(火) 01:47:20.29ID:jkXgnxvQ0 >>30
MapやWeakMapを使おう
MapやWeakMapを使おう
34デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/19(火) 12:32:27.47ID:wIcY707L035デフォルトの名無しさん (ワッチョイ f613-r/Us [2400:2200:738:481a:*])
2023/12/19(火) 14:48:44.22ID:s0aDiAUA036デフォルトの名無しさん (ワッチョイ f613-r/Us [2400:2200:738:481a:*])
2023/12/19(火) 14:54:15.24ID:s0aDiAUA0 あ、これだけだと前提が足りないか
test_idもtest2_idもdivタグだとする
test_idもtest2_idもdivタグだとする
37デフォルトの名無しさん (アウアウウー Sa9b-KnN9 [106.146.121.126])
2023/12/19(火) 15:48:03.09ID:g4Os8oTba38デフォルトの名無しさん (ワッチョイ 0274-mQNm [211.124.81.22])
2023/12/20(水) 13:23:41.58ID:QAvRAUPM0 JavaScriptで関数を変数に代入できると聞いて、
物理学で万物が粒子だけでなく波としての性質も合わせもつと聞いたときと同じくらいの衝撃を受けました。
どうもこのJavaScriptで関数を変数に代入できるという考えがしっくりこないのですが、どう考えれば受け入れられますか?
物理学で万物が粒子だけでなく波としての性質も合わせもつと聞いたときと同じくらいの衝撃を受けました。
どうもこのJavaScriptで関数を変数に代入できるという考えがしっくりこないのですが、どう考えれば受け入れられますか?
39デフォルトの名無しさん (ワッチョイ 0e33-YOgt [240b:10:8401:ab00:*])
2023/12/20(水) 13:43:53.69ID:bsiqnAom0 >>38
関数定義の構文
function f() {...}
は関数オブジェクトを変数 f に代入してるだけなので
g = f
としたら g() で同じ関数呼べるし
f = 123
と再代入したら f() で関数呼べなくなる
f = () => {...}
これで関数定義できることからもわかる
関数定義の構文
function f() {...}
は関数オブジェクトを変数 f に代入してるだけなので
g = f
としたら g() で同じ関数呼べるし
f = 123
と再代入したら f() で関数呼べなくなる
f = () => {...}
これで関数定義できることからもわかる
40デフォルトの名無しさん (ワッチョイ a262-Zz6i [2001:240:2428:b257:*])
2023/12/20(水) 15:57:28.18ID:5U5fDbVv041デフォルトの名無しさん (ワッチョイ 23cf-j1fn [2404:7a82:3de0:3500:*])
2023/12/21(木) 01:46:28.22ID:9dULh+b20 >>38
実態からはかけ離れるけど、メソッドが1個しかないオブジェクトの特別な扱いだと捉えるとどうだろう?
関数を変数に代入できるというのは、C言語のような古いものでも関数ポインタという形で実現してる。
関数はそのコードがメモリ上に配置されていて、関数の呼び出しはそのメモリのアドレスにジャンプするという形で行われるけど、そのジャンプ先のアドレスを変数に入れる感じ。
JavaScript ではクロージャって概念でもっと高度だけど、代入された変数には結局その関数の在りかが紐づけられてる。
実態からはかけ離れるけど、メソッドが1個しかないオブジェクトの特別な扱いだと捉えるとどうだろう?
関数を変数に代入できるというのは、C言語のような古いものでも関数ポインタという形で実現してる。
関数はそのコードがメモリ上に配置されていて、関数の呼び出しはそのメモリのアドレスにジャンプするという形で行われるけど、そのジャンプ先のアドレスを変数に入れる感じ。
JavaScript ではクロージャって概念でもっと高度だけど、代入された変数には結局その関数の在りかが紐づけられてる。
42デフォルトの名無しさん (スップ Sd42-MF53 [49.97.109.220])
2023/12/21(木) 14:29:18.32ID:0EYD168kd やろうと思えば各要素に関数の入った配列を作れるってことが
43デフォルトの名無しさん (ワッチョイ 2279-F8eA [61.192.187.100])
2023/12/22(金) 21:46:22.69ID:nFOKM4xK0 LISP→Scheme→Javascriptという歴史的経緯があるのでそこから理解すると判りやすいかも
コードはLISPにとってはただのリストというデータ表現でしかなかったのでコードを変数に代入するというのはとても自然な事だった
Schemeでレキシカルスコープが定義され一般的なクロージャの形になった
括弧だらけの構文は一般受けしないのでCっぽい構文のJavascriptが生まれた
ざっくり書けばこういうわけです
コードはLISPにとってはただのリストというデータ表現でしかなかったのでコードを変数に代入するというのはとても自然な事だった
Schemeでレキシカルスコープが定義され一般的なクロージャの形になった
括弧だらけの構文は一般受けしないのでCっぽい構文のJavascriptが生まれた
ざっくり書けばこういうわけです
44デフォルトの名無しさん (ワッチョイ 83ee-JyiE [2404:7a82:3de0:3500:*])
2023/12/23(土) 01:26:50.34ID:ZuCxSQpj0 >>43
分かりやすいかなぁw
分かりやすいかなぁw
45デフォルトの名無しさん (ワッチョイ 131b-taje [2400:2200:395:6245:*])
2023/12/23(土) 02:10:18.87ID:YHpw3jwo0 挙がってる各言語を知ってる人はなるほどと思うかもしれないけど
そうでないならただの遠回りな気が
そうでないならただの遠回りな気が
46デフォルトの名無しさん (ワッチョイ 3f79-Eb5K [61.192.187.100])
2023/12/23(土) 18:09:35.53ID:87/jUj+m0 >>39-41は代入できますって以上の説明はできてないし
ショックを受けた38が知りたいのはそういう事じゃないんだろう
Coders at WorkによればJavaacript設計者のブレンダン・アイクはSICPとSchemeの崇拝者で、
最初のアイデアはNetscapeブラウザにSchemeを持ち込むことだったとの事だよ
まずはSICPでも読むといいんじゃないの
ショックを受けた38が知りたいのはそういう事じゃないんだろう
Coders at WorkによればJavaacript設計者のブレンダン・アイクはSICPとSchemeの崇拝者で、
最初のアイデアはNetscapeブラウザにSchemeを持ち込むことだったとの事だよ
まずはSICPでも読むといいんじゃないの
47デフォルトの名無しさん (ワントンキン MMdf-llxg [153.248.8.149])
2023/12/23(土) 18:34:01.16ID:seU0bwIPM 起源が知りたいわけじゃないと思うよ…
48デフォルトの名無しさん (ワッチョイ 3f48-taje [2400:2200:39a:a839:*])
2023/12/23(土) 18:43:21.05ID:RHehsd3K0 別に関数を変数に代入できるのはJavaScriptが初とか唯一ってわけじゃないからそこを掘り下げてもね
49デフォルトの名無しさん (ワッチョイ 3f79-Eb5K [61.192.187.100])
2023/12/23(土) 20:16:48.44ID:87/jUj+m0 >>47-48
起源というかね、こういうのは歴史的経緯を辿って理解した方が判りやすいという話よ
君らのつまらんレスを読むよりはずっとね
Javascriptでやってる事は関数のポインタとはわけが違うんだから
起源というかね、こういうのは歴史的経緯を辿って理解した方が判りやすいという話よ
君らのつまらんレスを読むよりはずっとね
Javascriptでやってる事は関数のポインタとはわけが違うんだから
50デフォルトの名無しさん (ワントンキン MMdf-llxg [153.248.8.149])
2023/12/23(土) 20:22:17.26ID:seU0bwIPM >>49
それは絶対にない>わかりやすい
それは絶対にない>わかりやすい
51デフォルトの名無しさん (ワッチョイ 7f95-UZ2u [240b:12:6820:b000:*])
2023/12/23(土) 20:30:53.27ID:1KvsNCZl0 歴史を追いかけられるくらい論理的に文章組み立ててくれないか?
52デフォルトの名無しさん (ワッチョイ cfcf-x2Sm [153.206.76.80])
2023/12/23(土) 20:34:16.96ID:6J3b/0Sr0 >Javascriptでやってる事は関数のポインタとはわけが違うんだから
LISPが違うのはわかるけどJavaScriptは関数ポインタとそんなに違うんだっけ?
LISPが違うのはわかるけどJavaScriptは関数ポインタとそんなに違うんだっけ?
53デフォルトの名無しさん (ワッチョイ 3f48-taje [2400:2200:39a:a839:*])
2023/12/23(土) 20:55:11.83ID:RHehsd3K0 >>49
賛同されなかったからつまらんレスとか言い出すのは大人げないよ
賛同されなかったからつまらんレスとか言い出すのは大人げないよ
54デフォルトの名無しさん (アウアウウー Sa17-Krj3 [106.155.25.196])
2023/12/24(日) 14:20:26.14ID:eKX/4s7na >>52
だいぶ違うぞ
クロージャって言葉知ってる?
定義された場所のローカル変数を参照できるの
そしてローカル変数がクロージャによってキャプチャされたら
その変数はクロージャが死なない限りずっと保持される
これは関数ポインタとは訳が違う
そしてそれこそがscheme信者のアイクが取り入れたかったもの
クロージャじゃないなら関数ポインタと大して変わらんっちゃ変わらん
だいぶ違うぞ
クロージャって言葉知ってる?
定義された場所のローカル変数を参照できるの
そしてローカル変数がクロージャによってキャプチャされたら
その変数はクロージャが死なない限りずっと保持される
これは関数ポインタとは訳が違う
そしてそれこそがscheme信者のアイクが取り入れたかったもの
クロージャじゃないなら関数ポインタと大して変わらんっちゃ変わらん
55デフォルトの名無しさん (ワッチョイ 13b1-l39z [2001:240:242e:2802:*])
2023/12/24(日) 15:20:54.55ID:D70pmwho0 >>54
関数がクロージャを形成するかどうかと
関数を受け渡すときに関数へのポインタを使ってるかどうかは直交した別の問題
実際どのJavaScriptエンジンも関数へのポインタを使って変数への代入や関数の受け渡しを実現している
C言語はクロージャをサポートしないのでC言語の関数ポインタを使ってもクロージャにはならないのは当たり前
もう少し言えば関数を受け渡し可能にするためのスコープ解決の仕組み/ルールと受け渡す際に関数へのポインタを使ってるかどうかは別の問題
関数がクロージャを形成するかどうかと
関数を受け渡すときに関数へのポインタを使ってるかどうかは直交した別の問題
実際どのJavaScriptエンジンも関数へのポインタを使って変数への代入や関数の受け渡しを実現している
C言語はクロージャをサポートしないのでC言語の関数ポインタを使ってもクロージャにはならないのは当たり前
もう少し言えば関数を受け渡し可能にするためのスコープ解決の仕組み/ルールと受け渡す際に関数へのポインタを使ってるかどうかは別の問題
56デフォルトの名無しさん (ワッチョイ 13b1-l39z [2001:240:242e:2802:*])
2023/12/24(日) 15:53:19.34ID:D70pmwho0 別スレで見かけたトンデモ記事書いてる人だと思うけどレキシカルスコープの話と第一級関数の話とレキシカルスコープを使ったクロージャによって第一級関数を実現する話を混同してるんじゃないか
Schemeはレキシカルスコープを使ったクロージャという考え方を広く普及させた言語ではあるがレキシカルスコープや第一級関数はScheme以前の昔から実現されてたものだし
レキシカルスコープを使ったクロージャもScheme以前の昔からあった考え方
Schemeが初めてレキシカルスコープを定義したかのように書くのはやめよう
Schemeはレキシカルスコープを使ったクロージャという考え方を広く普及させた言語ではあるがレキシカルスコープや第一級関数はScheme以前の昔から実現されてたものだし
レキシカルスコープを使ったクロージャもScheme以前の昔からあった考え方
Schemeが初めてレキシカルスコープを定義したかのように書くのはやめよう
57デフォルトの名無しさん (スップ Sd5f-96gJ [1.72.3.74])
2023/12/24(日) 16:19:26.43ID:+dT+Yo8pd58デフォルトの名無しさん (アウアウウー Sa17-Krj3 [106.155.24.145])
2023/12/24(日) 16:48:55.22ID:awd0q31Fa >>56
いや別に起源とかはどうでも良くて関数ポインタとは違うよって話をしてるだけなんだけど
いや別に起源とかはどうでも良くて関数ポインタとは違うよって話をしてるだけなんだけど
59デフォルトの名無しさん (ワッチョイ f367-l39z [2001:240:242a:1b50:*])
2023/12/24(日) 18:14:29.42ID:uJ8b4azy060デフォルトの名無しさん (ワッチョイ cfb1-llxg [2400:4050:afe0:3700:*])
2023/12/24(日) 19:40:11.40ID:3LVtZ1UM0 彼は命題論理が理解できなくて、120年前の古文書まで読み返して、それでも分からなくて200年前の哲学書まで遡った結果、今でも命題論理が分かってないって人間だから、彼の歴史的経緯を遡れば理解しやすくなるって主張は実は彼自身によって反証されてたりする
61デフォルトの名無しさん (ワッチョイ 8321-JyiE [2404:7a82:3de0:3500:*])
2023/12/24(日) 22:35:22.54ID:ietP5AWI0 >>38 が分かりやすかったかどうか答えてくれれば解決だな
6238 (ワッチョイ bf74-uzyf [211.124.81.22])
2023/12/24(日) 23:33:56.01ID:M3Ha8RQ30 さっぱり分からん
63デフォルトの名無しさん (ワッチョイ cfb1-llxg [2400:4050:afe0:3700:*])
2023/12/24(日) 23:38:36.92ID:3LVtZ1UM0 おっIP同じやし38本人やん
まあそうだよな。あの説明でわかりやすく人間なんておらんやろ
まあそうだよな。あの説明でわかりやすく人間なんておらんやろ
64デフォルトの名無しさん (ワッチョイ 8f56-ryOq [2001:268:9af4:708a:*])
2023/12/25(月) 06:04:30.08ID:G5r1XQvR0 クロージャは第一級市民関数。
関数外のローカル変数などの文脈を取り込む。
つまり、スコープがゆるい
一方、Ruby の関数はスコープがきつくて、
関数外のローカル変数を通さないので、第一級関数ではない。
ただし、ブロックはブロック外のローカル変数を通すから、クロージャ
他に、レシーバーとメソッドを持ち運ぶ、メソッドオブジェクトもある
関数外のローカル変数などの文脈を取り込む。
つまり、スコープがゆるい
一方、Ruby の関数はスコープがきつくて、
関数外のローカル変数を通さないので、第一級関数ではない。
ただし、ブロックはブロック外のローカル変数を通すから、クロージャ
他に、レシーバーとメソッドを持ち運ぶ、メソッドオブジェクトもある
65デフォルトの名無しさん (ワッチョイ d301-h9f0 [60.89.160.66])
2023/12/25(月) 08:32:20.98ID:xnbzJK+y066デフォルトの名無しさん (ワッチョイ 3363-llxg [180.47.35.21])
2023/12/25(月) 21:05:49.32ID:HhwD874b0 そりゃそもそもLISPやSchemeを全く知らない人だったんでしょ
分かりやすくなる要素なんて1ミリもないわな
分かりやすくなる要素なんて1ミリもないわな
67デフォルトの名無しさん (アウアウウー Sa17-Krj3 [106.155.20.162])
2023/12/25(月) 21:28:48.99ID:XllulW5ca struct Closure {
struct Env env;
struct Function func;
};
Closureの最もシンプルな実装
Envはキャプチャしたローカル変数を保持する環境
Functionは関数ポインタやらを保持してるオブジェクトだと思ってくれ
たったこれだけのことに過ぎない
関数ポインタにenvが追加されただけのものだ
struct Env env;
struct Function func;
};
Closureの最もシンプルな実装
Envはキャプチャしたローカル変数を保持する環境
Functionは関数ポインタやらを保持してるオブジェクトだと思ってくれ
たったこれだけのことに過ぎない
関数ポインタにenvが追加されただけのものだ
68デフォルトの名無しさん (ワッチョイ ef1a-l39z [2001:240:242d:fdfa:*])
2023/12/26(火) 01:40:31.83ID:XlP1bh7b0 クロージャやレキシカルスコープがどうやって実現されてるかという質問なら[[Environment]]のことを教えてあげるのはいいと思うけど
そういう話は誰もしてないからねぇ
そういう話は誰もしてないからねぇ
69デフォルトの名無しさん (ワッチョイ 6318-taje [2400:2200:39a:aa64:*])
2023/12/26(火) 12:17:20.00ID:iZHdB3Jl0 結局のところ>>38の問題って関数は変数に代入できないものだっていう固定観念を他の言語に持ち込んでるところだと思う
プログラミング言語なんて所詮ヒトがそれぞれの都合で作ったものであって言語が違えば考え方や常識も違う
そこを理解して他の言語の固定観念を持ち込まないようにしないとこの先もしっくりこないこと、受け入れられないことだらけだろう
プログラミング言語なんて所詮ヒトがそれぞれの都合で作ったものであって言語が違えば考え方や常識も違う
そこを理解して他の言語の固定観念を持ち込まないようにしないとこの先もしっくりこないこと、受け入れられないことだらけだろう
70デフォルトの名無しさん (ワッチョイ efc9-l39z [2001:240:247c:3ea8:*])
2023/12/26(火) 18:41:41.07ID:DtaEhUmP0 関数を変数に直接代入できないCの系譜の言語が最も広く普及してるから
そういう言語をやってきた人が関数を変数に直接代入できる言語に初めて接したら>>38のように驚くのは極々自然のこと
何が固定観念なのかなんてそれが覆るまで分からないんだから固定観念を持ち込むなとか言っても何の役にも立たないよ
そういう言語をやってきた人が関数を変数に直接代入できる言語に初めて接したら>>38のように驚くのは極々自然のこと
何が固定観念なのかなんてそれが覆るまで分からないんだから固定観念を持ち込むなとか言っても何の役にも立たないよ
71デフォルトの名無しさん (ワッチョイ 3f27-taje [2400:2200:391:e73b:*])
2023/12/26(火) 19:02:16.70ID:ar+aUrwZ0 今回のことで固定観念だったと気づければそれでいいと思うよ
そうすれば次からは疑ってかかることができるわけだし
そうすれば次からは疑ってかかることができるわけだし
72デフォルトの名無しさん (オイコラミネオ MMcf-zvIc [150.66.117.40])
2024/01/05(金) 08:36:00.72ID:kvxPBg+iM 糞長い式が真値のときだけ変数に代入したくて
if (糞長い式) {
X = 糞長い式
}
と書いてるんですが糞長い式を一度で済ますにはどうしたらいいですか
if (糞長い式) {
X = 糞長い式
}
と書いてるんですが糞長い式を一度で済ますにはどうしたらいいですか
73デフォルトの名無しさん (ワッチョイ 1f74-rafF [211.124.81.22])
2024/01/05(金) 09:10:31.40ID:PLcvVAqJ074デフォルトの名無しさん (ワッチョイ 1f74-rafF [211.124.81.22])
2024/01/05(金) 09:12:10.60ID:PLcvVAqJ0 X = 糞長い式 ? 糞長い式2 : X;
75デフォルトの名無しさん (ワッチョイ 0b30-3ajw [150.9.34.120])
2024/01/05(金) 09:26:22.59ID:B0YNzjLy0 Y = 糞長い式
if (Y) {
X = Y
}
if (Y) {
X = Y
}
76デフォルトの名無しさん (ワッチョイ ef85-NRV/ [240b:10:8401:ab00:*])
2024/01/05(金) 09:52:24.63ID:UVxCqy8T0 2回評価したくないときもあるし>>75
https://docs.python.org/ja/3/whatsnew/3.8.html#assignment-expressions
そこまで糞長くないならセイウチ演算子
https://docs.python.org/ja/3/whatsnew/3.8.html#assignment-expressions
そこまで糞長くないならセイウチ演算子
77デフォルトの名無しさん (ワッチョイ 4b61-7PFe [220.104.177.51])
2024/01/05(金) 11:11:29.09ID:j+cl8so10 X = 糞長い式 || X;
わかりやすい>>75でいいと思うわ
わかりやすい>>75でいいと思うわ
78デフォルトの名無しさん (ワッチョイ efbb-bJ3A [240f:108:3018:1:*])
2024/01/05(金) 18:15:32.86ID:xFVV62H30 カルノー図やクワイン・マクラスキー法で書けないほど複雑だと
どうにもならない
if else if else にうまく展開するか
switch 文をうまく使うとかかなあ
どうにもならない
if else if else にうまく展開するか
switch 文をうまく使うとかかなあ
79デフォルトの名無しさん (ワッチョイ fd9f-stEI [122.133.203.183])
2024/01/08(月) 08:24:08.50ID:HV7sMHf30 質問させていただきます。
タグの属性onclick等で設定したイベント処理では
処理側の関数ではeventオブジェクトを参照出来ないのでしょうか?
色々探してるのですが見つけられなくて・・・よろしくお願い致します。
タグの属性onclick等で設定したイベント処理では
処理側の関数ではeventオブジェクトを参照出来ないのでしょうか?
色々探してるのですが見つけられなくて・・・よろしくお願い致します。
80デフォルトの名無しさん (ワッチョイ 2379-e2pS [61.192.187.100])
2024/01/08(月) 10:20:56.34ID:FNFcnj+v0 >>79
onclick属性のイコールの右側にある値は無名関数をそのままラップしたもので、eventオブジェクトはその関数の第一引数に渡される
つまり<タグ onclick="func(arguments[0]);">とすれば取得できる
onclick属性のイコールの右側にある値は無名関数をそのままラップしたもので、eventオブジェクトはその関数の第一引数に渡される
つまり<タグ onclick="func(arguments[0]);">とすれば取得できる
81デフォルトの名無しさん (ワッチョイ 8d43-iBaE [114.148.50.247])
2024/01/08(月) 10:51:13.68ID:adS5ZNXz0 >>79
引数で渡されてくるけど?
HTMLのタグの中に書く事例では意味も解らずその引数を省略しているのが多い
それより、今どきはHTMLと分離した、こっちの書き方がおすすめ
https://developer.mozilla.org/ja/docs/Web/API/Element/click_event
引数で渡されてくるけど?
HTMLのタグの中に書く事例では意味も解らずその引数を省略しているのが多い
それより、今どきはHTMLと分離した、こっちの書き方がおすすめ
https://developer.mozilla.org/ja/docs/Web/API/Element/click_event
82デフォルトの名無しさん (ワッチョイ 1501-QrVU [60.89.10.107])
2024/01/08(月) 13:07:07.19ID:cXOMuDOl083デフォルトの名無しさん (ワッチョイ db9b-5x1m [240b:10:8401:ab00:*])
2024/01/08(月) 13:58:47.00ID:pIW6TUAd0 ブラウザの開発者ツールにあるデバッガをつかえば気づける
止めたところの環境が丸見えになるから
止めたところの環境が丸見えになるから
84デフォルトの名無しさん (ワッチョイ fd2e-dvWY [2001:268:9a3d:8302:*])
2024/01/08(月) 20:55:54.87ID:gJaMg8aw0 例えば、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 );
}
} )
} );
$( 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:*])
2024/01/08(月) 21:08:17.54ID:Jg6SbkUr0 <button onclick="hoge(this)">ってやると意図しない動きすることあるからルールで禁止してるところもあるよね
86デフォルトの名無しさん (ワッチョイ 0510-JApz [180.12.82.129])
2024/01/11(木) 09:49:12.76ID:L0eqWFW50 子要素は含まないように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");}
);
</スクリプト>
これだとテーブルの中のフォームをスライドさせても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.07ID:8+5yXztZ0 何をやりたいのかがわからない説明
とりあえずプログラムを意識せずに
やりたいことの要件を日本語でよろしく
とりあえずプログラムを意識せずに
やりたいことの要件を日本語でよろしく
88デフォルトの名無しさん (ワッチョイ 2319-dvWY [2001:268:c0d0:700e:*])
2024/01/11(木) 10:35:49.26ID:oja63d6W0 function(e){
// input要素以外をクリックした場合の処理
if (e.target.tagName !== 'INPUT') {
alert("www");
}
}
// input要素以外をクリックした場合の処理
if (e.target.tagName !== 'INPUT') {
alert("www");
}
}
89デフォルトの名無しさん (ワッチョイ 0510-zseD [180.12.82.129])
2024/01/11(木) 13:03:40.31ID:L0eqWFW5090デフォルトの名無しさん (ワッチョイ b536-QPx5 [2400:4052:5062:9ff0:*])
2024/01/11(木) 14:18:15.97ID:8+5yXztZ0 それ、バブリングを意識しないとダメかもよ
91デフォルトの名無しさん (ワッチョイ 231b-JApz [2400:4151:a4a0:6500:*])
2024/01/11(木) 14:44:36.31ID:bfPtSoSL0 先ほどは手元にソースコードがなかったので即席で質問してしまいました。
やりたいことはテーブル部分でタッチムーブしたときブラウザのスクロールを禁止にしたいのですが、
テーブルにあるスライダーまでロックされて動かせないようになってしまうので、
スライダーを除外したテーブル部分の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(); //ブラウザのスクロールを禁止にする
}
);
</スクリプト>
やりたいことはテーブル部分でタッチムーブしたときブラウザのスクロールを禁止にしたいのですが、
テーブルにあるスライダーまでロックされて動かせないようになってしまうので、
スライダーを除外したテーブル部分の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デフォルトの名無しさん (ワッチョイ 85ae-Lq2F [2409:251:9020:2100:*])
2024/01/11(木) 15:08:55.09ID:k0wEY4GK0 よく分からんが、cssでそんなのがあるな
https://developer.mozilla.org/ja/docs/Web/CSS/overscroll-behavior
https://developer.mozilla.org/ja/docs/Web/CSS/overscroll-behavior
93デフォルトの名無しさん (ワッチョイ 1501-JApz [60.132.249.142])
2024/01/11(木) 16:34:13.87ID:tWeEPqJO094デフォルトの名無しさん (ワッチョイ 8d43-n7AJ [114.166.5.254])
2024/01/11(木) 22:20:25.19ID:vnpK4WpS0 clickやmousedownに仕込む話したど思ったのでバブリングを指摘したけれど
スマホの場合にスライダー操作でスクロールしちゃうのを止めたい場合の話なら別問題
スクロールはブラウザ側の仕組みでDOMのイベントバブリングを止めてもダメ
それとターブルじゃなくて、スライダーをtouchmoveしたときにスクロールを止めたいのじゃないですか
要件としては
スライダーのtouchstartでブラウザのスクロール機能を無効にして
スライダーのtouchendでブラウザのスクロール機能を有効に戻す
スクロールの有効・無効は、スクロール要素のcssのスタイルで制御できるので、JavaScriptでstyle要素のoverflowYまたはoverflowXを'hidden'または'auto'と値を切り替える
スマホの場合にスライダー操作でスクロールしちゃうのを止めたい場合の話なら別問題
スクロールはブラウザ側の仕組みでDOMのイベントバブリングを止めてもダメ
それとターブルじゃなくて、スライダーをtouchmoveしたときにスクロールを止めたいのじゃないですか
要件としては
スライダーのtouchstartでブラウザのスクロール機能を無効にして
スライダーのtouchendでブラウザのスクロール機能を有効に戻す
スクロールの有効・無効は、スクロール要素のcssのスタイルで制御できるので、JavaScriptでstyle要素のoverflowYまたはoverflowXを'hidden'または'auto'と値を切り替える
95デフォルトの名無しさん (ワッチョイ 231d-JApz [2400:4151:a4a0:6500:*])
2024/01/11(木) 22:41:54.15ID:bfPtSoSL096デフォルトの名無しさん (ワッチョイ 85e7-UQX2 [2404:7a87:26a0:9e00:*])
2024/01/13(土) 03:22:15.94ID:bBKen2/T0 すいません、vueの質問はここでいいですか?
97デフォルトの名無しさん (ワッチョイ e3a8-57IR [2400:2200:45d:4c3b:*])
2024/01/13(土) 11:42:05.46ID:sUiBS1y50 ↓あたりにどうぞ
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/
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.60ID:vAN1c9wS0 ありがとうございます
99デフォルトの名無しさん (ワッチョイ 4d7c-MQtI [122.212.16.94])
2024/01/26(金) 17:25:13.36ID:2+81uqBd0 WebフロントエンドでのJavaScriptを勉強中です
「jQueryでできることは素のJSでもできるのがほとんどになったから、jQuery不要」という話しが出てきますが、
エレメントの操作などで、素のJSだと記述する文字が長く、jQueryだとすごく短く書けるので、それだけでも十分便利と感じています。
document.querySelector('selector')
⇒ $('selector')
jQuery不要の場合、効率良く書くために代わりに何を使っているのか気になります。
大型のフレームワークとかでしょうか?フレームワーク使うと、ここのエレメントの参照・操作などはもはや不要になるのでしょうか?
「jQueryでできることは素のJSでもできるのがほとんどになったから、jQuery不要」という話しが出てきますが、
エレメントの操作などで、素のJSだと記述する文字が長く、jQueryだとすごく短く書けるので、それだけでも十分便利と感じています。
document.querySelector('selector')
⇒ $('selector')
jQuery不要の場合、効率良く書くために代わりに何を使っているのか気になります。
大型のフレームワークとかでしょうか?フレームワーク使うと、ここのエレメントの参照・操作などはもはや不要になるのでしょうか?
100デフォルトの名無しさん (ワッチョイ a300-kvtp [221.118.182.146])
2024/01/26(金) 19:57:32.14ID:vs+8Yc4d0 jQueryの技術覚えてもjQueryにしか使えない。素のJS技術はどんなフレームワーク使っても役に立つ
101デフォルトの名無しさん (ブーイモ MMe9-pDPK [202.214.125.44])
2024/01/26(金) 20:11:15.77ID:Uafucq2BM >>99
コード補完機能(任意のスニペット呼び出しを含む)のある現代のエディタではその全てをキータイプする必要は無いし、どうしても短く書きたいならショートハンドを定義すればいい
たとえば、5ch互換掲示板ビューアであるブラウザ拡張機能「read.crx 2」では、同拡張機能の共同メンテナの方が作成したjQueryライク(互換ではない)なショートハンドライブラリ「shortQuery.js」が使われてる(だいぶ前にいわゆる「脱jQuery」のお供として導入されたハズ)
なんにせよ、初心者が今からjQueryを学ぶのは悪手
コード補完機能(任意のスニペット呼び出しを含む)のある現代のエディタではその全てをキータイプする必要は無いし、どうしても短く書きたいならショートハンドを定義すればいい
たとえば、5ch互換掲示板ビューアであるブラウザ拡張機能「read.crx 2」では、同拡張機能の共同メンテナの方が作成したjQueryライク(互換ではない)なショートハンドライブラリ「shortQuery.js」が使われてる(だいぶ前にいわゆる「脱jQuery」のお供として導入されたハズ)
なんにせよ、初心者が今からjQueryを学ぶのは悪手
102デフォルトの名無しさん (ワッチョイ e35c-y2cH [211.3.240.74])
2024/01/26(金) 20:12:23.71ID:Z5KyuX5d0 素のjs分からずにjquery使えるわけないだろ
103デフォルトの名無しさん (ワッチョイ 433e-K/rq [2400:2200:7d4:c4d1:*])
2024/01/26(金) 21:41:55.02ID:bxMKu9aD0104デフォルトの名無しさん (ブーイモ MM43-kvtp [49.239.68.29])
2024/01/26(金) 21:48:25.16ID:KJ09lp1IM そう思ってるとこんなん当然知ってますよねみたいなノリでevent処理とかrefとか出て詰むゾ
105デフォルトの名無しさん (ワッチョイ f95a-xxv9 [2400:4052:5062:9ff0:*])
2024/01/28(日) 11:39:44.53ID:WhNL7KNN0 >>99
jQueryの現在はHPフロントエンジニアさんが
抱負なライブラリでHPに花をそえるために使っているだけ
ウェブアプリ屋さんはjQueryが邪魔くさい時があるので使わない
どの分野を目指すのかが決まっているなら
その分野で何が主流なのかを見極めたほうがいい
jQueryの現在はHPフロントエンジニアさんが
抱負なライブラリでHPに花をそえるために使っているだけ
ウェブアプリ屋さんはjQueryが邪魔くさい時があるので使わない
どの分野を目指すのかが決まっているなら
その分野で何が主流なのかを見極めたほうがいい
106デフォルトの名無しさん (ワッチョイ 7386-XCDl [240b:12:6820:b000:*])
2024/01/28(日) 19:30:17.30ID:1z8oB9tQ0 動的に作られる特定の要素にだけイベント追加するのがラク
jQueryがバニラJSに勝ってる唯一の点だけど、そういう処理を入れるくらいDOMの操作使ったアプリ作るなら他のフレームワークのほうが良いだろう
jQueryがバニラJSに勝ってる唯一の点だけど、そういう処理を入れるくらいDOMの操作使ったアプリ作るなら他のフレームワークのほうが良いだろう
107デフォルトの名無しさん (ワッチョイ e9a9-Y1Fy [240d:1a:790:2b00:*])
2024/01/28(日) 20:16:55.07ID:9hZosd/l0 ゆうて古から続くjqueryの資産はいたる所にあるから、読めることくらいは出来ないとな
難しいもんではないんだし
難しいもんではないんだし
108デフォルトの名無しさん (ワッチョイ 1901-fC/B [60.102.190.56])
2024/01/28(日) 23:52:21.72ID:Plt7vTfv0 >>106
バニラでも祖先ノードでmatches(selectors)を使えば対応可能なので、それほどjQueryに優位性はない気がする。
それから、jQueryはバブリングフェースのみ対応という弱点がある。
バブリングしないイベントタイプに関してはaddEventListener()に優位性がある。
バニラでも祖先ノードでmatches(selectors)を使えば対応可能なので、それほどjQueryに優位性はない気がする。
それから、jQueryはバブリングフェースのみ対応という弱点がある。
バブリングしないイベントタイプに関してはaddEventListener()に優位性がある。
109デフォルトの名無しさん (ワッチョイ 99ea-Mq/i [2404:7a80:8400:8900:*])
2024/01/29(月) 01:34:06.63ID:fIBxeYXl0 他から持ってきたコードが指すjQueryが最近のじゃなくて
だれが互換性担保するのってのが一番困る
jQueryを直接つかう分には検証できるけど
依存しているライブラリは採用せんでほしい
だれが互換性担保するのってのが一番困る
jQueryを直接つかう分には検証できるけど
依存しているライブラリは採用せんでほしい
110デフォルトの名無しさん (ワッチョイ f95a-w/9U [2400:4052:5062:9ff0:*])
2024/01/30(火) 09:12:09.86ID:GdANFjKZ0 jQuery使いの人は行き当たりばったりな人が多い
jQueryライブラリファイルの読み込みが沢山あってなんじゃこりゃみたいな
jQueryライブラリファイルの読み込みが沢山あってなんじゃこりゃみたいな
111デフォルトの名無しさん (ワッチョイ 1901-DQL8 [60.132.249.142])
2024/01/30(火) 11:06:06.79ID:kUs11O+K0 jQueryが出た頃はSelectors APIもなかったからな
行き当たりばったりというより昔の標準APIが貧弱でライブラリに頼るしかなかった
行き当たりばったりというより昔の標準APIが貧弱でライブラリに頼るしかなかった
112デフォルトの名無しさん (ワッチョイ 99d1-NbCu [2001:268:9a89:2571:*])
2024/01/31(水) 00:18:29.61ID:Z4CJtIhd0 jQuery は短く書けるので、ちょっとしたデモには良い。
でも、React, Vue.js では使わない
Bootstrap も、5 からは使わない。
popper.js に変わった
でも、React, Vue.js では使わない
Bootstrap も、5 からは使わない。
popper.js に変わった
113デフォルトの名無しさん (ワッチョイ e9b9-Y1Fy [2400:2200:3b7:aee5:*])
2024/01/31(水) 08:00:03.26ID:8Xe2gISY0 >>110
しかもバージョンがところどころ違ったり読込先や仕方が違ったりする
しかもバージョンがところどころ違ったり読込先や仕方が違ったりする
114デフォルトの名無しさん (ワッチョイ 99c5-Ak3u [240b:12:203:6300:* [上級国民]])
2024/02/03(土) 01:34:02.49ID:VXfZdpMe0 >>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が優れてて代替出来るから不要になったという話では無い
■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])
2024/02/03(土) 06:58:45.76ID:hL2W++6M0 変数更新してるだけに見えて、別処理が勝手に動くというのも実はアレだけどな
今はリアクティブが流行してるからそこにケチつける風潮ないけれど
今はリアクティブが流行してるからそこにケチつける風潮ないけれど
116デフォルトの名無しさん (ワッチョイ 1901-fC/B [60.88.91.184])
2024/02/03(土) 10:15:49.25ID:HeN++Rh50117デフォルトの名無しさん (アウアウエー Sae3-P9+J [111.239.175.167])
2024/02/03(土) 10:49:13.33ID:YZYv2rY+a 反応欲しいなら知恵袋にしとけって
118デフォルトの名無しさん (ワッチョイ e34b-t63M [115.30.229.48 [上級国民]])
2024/02/04(日) 02:28:25.82ID:ipvGCo7I0 JavaScriptで作れるプログラムって、webブラウザ以外になにかありますか?
全然ユーザーがいないのはダメだけど
ある程度需要がありそうな用途
全然ユーザーがいないのはダメだけど
ある程度需要がありそうな用途
119デフォルトの名無しさん (ブーイモ MM43-LmvZ [49.239.73.74])
2024/02/04(日) 03:05:45.75ID:w9OYnB1OM >>118
WebブラウザとWebページを区別できるようになろう
WebブラウザとWebページを区別できるようになろう
120デフォルトの名無しさん (ワッチョイ 2379-u1h9 [61.192.207.171])
2024/02/04(日) 05:18:25.36ID:7DDGpERD0 でもまあwebブラウザが全てではあるよね
他に出番無いし
他に出番無いし
レスを投稿する
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★3 [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 中国とのパイプ役がいない高市政権、実施詰みか [668970678]
- とうすこ🏡愛され絵文字♡🤥👊😅👊👶♡
- 【なぜ】安倍晋三の評価、地味に上がってる模様… [343591364]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 【悲報】ココイチ、売上増収も客離れが止まらずジリ貧。「さらなる値上げも視野」😳 [518915984]
- 【画像】セクシー女優・天沢りんさん「お休み頂いてた半年間でこんな体になりました🪽🤍」👉予想通りの展開に [242521385]
