◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

JavaScript の質問用スレッド vol.126 ->画像>2枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1702111239/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (オッペケ Sr9f-tek/ [126.254.232.20])
2023/12/09(土) 17:40:39.92ID:Mnb70srnr
!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
http://2chb.net/r/tech/1659855460/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20])
2023/12/09(土) 17:41:59.25ID:Mnb70srnr
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 https://plnkr.co/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■次スレの立て方
本文一行目に「!extend:checked:vvvvvv:1000:512」と書いて、>>1-5のテンプレの「前スレ」「関連スレ」を最新化して立ててください。

■JavaScriptスレの現状
元々はWeb制作板が本スレでしたが、ライブラリ信者に荒らされ、プログラム板に避難所として本スレが立てられました。
Web制作板の本スレは荒らされてから次スレが立っておらず、重複スレの消化のみとなっています。
実質的に本スレは存在しない為、質問者はWeb制作板、ブログラム板のどちらのスレで質問しても問題ありません。
3デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20])
2023/12/09(土) 17:43:26.17ID:Mnb70srnr
■関連スレ(Web制作板)
JavaScript の質問用スレッド vol.126 (重複スレの消化)
http://2chb.net/r/hp/1439005423/
JavaScript ライブラリ総合質問所 vol.5
http://2chb.net/r/hp/1465399470/
jQuery 質問用スレッド vol.7
http://2chb.net/r/hp/1466750494/

■各種仕様
◆ECMAScript
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
https://262.ecma-international.org/13.0/ (ECMAScript 2022)
◆HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/ (HTML Living
Standard)
https://momdo.github.io/html/ (HTML Living
Standard日本語訳)
4デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20])
2023/12/09(土) 17:45:14.13ID:Mnb70srnr
テンプレここまで

内容は前スレ踏襲
5デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20])
2023/12/09(土) 17:55:10.18ID:Mnb70srnr
テンプレの範囲ぐらい修正しとけばよかったかな
6デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 16:33:48.20ID:ngtmyS7f0
前スレで日付変換の関数で質問していた者です。

開発環境としましては、AndroidのmementoというDBを制御するために、Javascriptの使用が可能なので、試しに勉強してみようと思った次第です。

コードエディターや>>2記載のサイトでは正常動作をしていることから、開発環境に問題があると判断しました。ただそうなるとDBと合わせて使用できるメリットが無くなるので代替手段を模索しているところです。

成功例(日時が2つ表示)
JavaScript の質問用スレッド vol.126 ->画像>2枚

失敗例
(consolelogに対応しないため、コメントアウトしていますが、関数が結果に出力される。何も表示されないはず。)
JavaScript の質問用スレッド vol.126 ->画像>2枚

コードエディター
https://play.google.com/store/apps/details?id=com.rhmsoft.code

memento
https://play.google.com/store/apps/details?id=com.luckydroid.droidbase
7デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 16:34:26.85ID:ngtmyS7f0
const date1 = new Date('2021/01/01')
const date2 = new Date('2022/02/02')
const stDate = dateToYyyymmdd(date1);
const stTime = timeToHhmm(date1);
const edDate = dateToYyyymmdd(date2);
const edTime = timeToHhmm(date2);

console.log(stDate + stTime + " " + edDate + edTime)
8デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 16:34:43.88ID:ngtmyS7f0
// DateをYYYY/MM/DD文字列に変換する
function dateToYyyymmdd(date){

let n = date.getFullYear().toString();
n = date.getFullYear().toString() + "/";
n +=
(date.getMonth()+1).toString().padStart(2, "0") + "/";
n +=
date.getDate().toString().padStart(2, "0") + "_";
return(n);
}
9デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 16:35:00.00ID:ngtmyS7f0
// DateをHH:MM文字列に変換する
function timeToHhmm(time){
let n = time.getHours().toString().padStart(2, "0") + ":";
n += time.getMinutes().toString().padStart(2, "0");
return(n);
}
10デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 16:35:52.81ID:ngtmyS7f0
申し訳有りません。
サービスでの稼働は確認出来たのですが、共有方法が分からないので、連投になってしまいましたが、直接描かせていただきました。
11デフォルトの名無しさん (アウアウウー Sa49-+EJW [106.155.27.178])
2023/12/10(日) 17:01:43.23ID:013bN9IEa
>>10
よくわからんけどそもそもその環境は関数定義して呼び出すとかできるの?
全体を関数として扱って最後の戻り値を文字列として解釈してるとかそういうノリではなく?
12デフォルトの名無しさん (ワッチョイ ed27-tek/ [2400:2200:6f2:ad4b:*])
2023/12/10(日) 17:01:58.34ID:uEdCnVbW0
>>10
https://wiki.mementodatabase.com/index.php/JavaScript_field
>but only the result of the last operation will be entered into the field.
とあるから最後の文の値が結果値として採用される
だからtimeToHhmm関数自体が結果になっている

修正したければコードの最後に
const result = stDate + stTime + " " + edDate + edTime
などと追加すればその値が結果値として採用されるんではないだろうか
13デフォルトの名無しさん (ワッチョイ 5510-yLTa [222.230.65.145])
2023/12/10(日) 21:02:11.63ID:ngtmyS7f0
>>11,12
まさに仰るとおりでございました。
最後に出力文を置くことで正しく稼働を確認できました。
改めて調べようが足らなかったことを痛感しました。正直自分の中に『これ、なんかバグってるのかな…』などと考えてしまってた所もありましたが、単に仕様であったことに恥ずかしさとプラットフォーム開発者に申し訳ないですね。
wikiもしっかり読み込んで改めて勉強しなおしてみます。
本当にありがとうございます。
長々と失礼しました。
14デフォルトの名無しさん (ワッチョイ b51d-C3j7 [180.178.89.53])
2023/12/15(金) 23:44:44.09ID:WfAwrcm40
nullとundefinedはどう違うのでしょうか?
15デフォルトの名無しさん (ワッチョイ b701-Y8ba [60.106.64.223])
2023/12/16(土) 00:21:53.93ID:92Act5oB0
>>14
型も値も何もかも違う
1614 (ワッチョイ 4f1d-Qk2W [180.178.89.53])
2023/12/16(土) 12:33:00.76ID:3Jo1PIzy0
>>15
レスありがとうございます

単純に、nullは「空」、undefinedは「未定義」と理解しておけばいいでしょうか?
うーんでも、空だから未定義であるとも言えるし、未定義だから空とも言える気もします
難しく考え出すとハマりますね…
17デフォルトの名無しさん (ワッチョイ 5b48-r/Us [2400:2200:3f1:994b:*])
2023/12/16(土) 12:50:38.08ID:GGJUNSgh0
まず「空」とはなんぞや、「未定義」とはなんぞやってところから勉強してみたら?
1814 (ワッチョイ 4f1d-Qk2W [180.178.89.53])
2023/12/16(土) 13:09:24.81ID:3Jo1PIzy0
>>17
レスありがとうございます

自分なりに少し調べてみたら、
undefinedは「これから何かしらの値が入る余地があるがまだ定義されていない」
nullは「値が入りようがないから空」
という違いがあるみたいですね
19デフォルトの名無しさん (ワッチョイ 5b48-r/Us [2400:2200:3f1:994b:*])
2023/12/16(土) 13:43:31.64ID:GGJUNSgh0
意味的には別物だというのは納得できた?
2014 (ワッチョイ 4f1d-Qk2W [180.178.89.53])
2023/12/16(土) 16:34:04.63ID:3Jo1PIzy0
>>19
はい、それなりに理解出来たと思います
ありがとうございます
JSでは、undefinedに比べるとnullの登場頻度はかなり低いみたいですね
21デフォルトの名無しさん (ワッチョイ 0e6d-Aq9B [240b:10:8401:ab00:*])
2023/12/16(土) 19:13:30.08ID:UfR4i5aB0
設計ミスだから使い分ける必要はなく
外部とのやりとり以外に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;
のように値を入れたいです。
23デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/18(月) 12:38:38.33ID:UBFKxLGp0
配列のオブジェクトって言った方が正しいのかわからないけど
とにかく>>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で書くスタイルは古い
参考にした情報があるなら忘れよう
更新もせずずっと放置しているなら害悪でしかない
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];
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]
};
28デフォルトの名無しさん (ワッチョイ 5bd1-r/Us [2400:2200:738:48fd:*])
2023/12/18(月) 14:17:37.97ID:oIHu3KbV0
>>23
そこがあやふやだからどう宣言すればいいかも分からないんだと思う
君が宣言したいものは「配列をメンバーに持つオブジェクト」だよ
29デフォルトの名無しさん (ワッチョイ 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;というような感じです
一応動作はしたけどやらないほうがいいんですか?
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 と同じ
33デフォルトの名無しさん (ワッチョイ 4f61-3PPy [180.23.197.208])
2023/12/19(火) 01:47:20.29ID:jkXgnxvQ0
>>30
MapやWeakMapを使おう
34デフォルトの名無しさん (ワッチョイ 4f10-n6T6 [180.12.82.129])
2023/12/19(火) 12:32:27.47ID:wIcY707L0
>>31
確認したら期待通りに動きました

>>31-33
ありがとうございます
35デフォルトの名無しさん (ワッチョイ f613-r/Us [2400:2200:738:481a:*])
2023/12/19(火) 14:48:44.22ID:s0aDiAUA0
>>34
>>30のあとに
console.log(obj[element]);
と書くと何が表示されると思う?
36デフォルトの名無しさん (ワッチョイ f613-r/Us [2400:2200:738:481a:*])
2023/12/19(火) 14:54:15.24ID:s0aDiAUA0
あ、これだけだと前提が足りないか
test_idもtest2_idもdivタグだとする
37デフォルトの名無しさん (アウアウウー Sa9b-KnN9 [106.146.121.126])
2023/12/19(火) 15:48:03.09ID:g4Os8oTba
>>16
実用的はそれらは同値だと判断した方が良い
少なくともコード上分けるメリットはゼロ
38デフォルトの名無しさん (ワッチョイ 0274-mQNm [211.124.81.22])
2023/12/20(水) 13:23:41.58ID:QAvRAUPM0
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 = () => {...}
これで関数定義できることからもわかる
40デフォルトの名無しさん (ワッチョイ a262-Zz6i [2001:240:2428:b257:*])
2023/12/20(水) 15:57:28.18ID:5U5fDbVv0
>>38
Arrayだろうが関数だろうが変数に格納されてる値はポインタで
値を使う時に自動的にデリファレンスされてると思っとけばいいんじゃね

最近の言語ならどれも同じようなことできるけどね
41デフォルトの名無しさん (ワッチョイ 23cf-j1fn [2404:7a82:3de0:3500:*])
2023/12/21(木) 01:46:28.22ID:9dULh+b20
>>38
実態からはかけ離れるけど、メソッドが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が生まれた
ざっくり書けばこういうわけです
44デフォルトの名無しさん (ワッチョイ 83ee-JyiE [2404:7a82:3de0:3500:*])
2023/12/23(土) 01:26:50.34ID:ZuCxSQpj0
>>43
分かりやすいかなぁ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でも読むといいんじゃないの
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でやってる事は関数のポインタとはわけが違うんだから
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は関数ポインタとそんなに違うんだっけ?
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信者のアイクが取り入れたかったもの
クロージャじゃないなら関数ポインタと大して変わらんっちゃ変わらん
55デフォルトの名無しさん (ワッチョイ 13b1-l39z [2001:240:242e:2802:*])
2023/12/24(日) 15:20:54.55ID:D70pmwho0
>>54
関数がクロージャを形成するかどうかと
関数を受け渡すときに関数へのポインタを使ってるかどうかは直交した別の問題
実際どのJavaScriptエンジンも関数へのポインタを使って変数への代入や関数の受け渡しを実現している

C言語はクロージャをサポートしないのでC言語の関数ポインタを使ってもクロージャにはならないのは当たり前

もう少し言えば関数を受け渡し可能にするためのスコープ解決の仕組み/ルールと受け渡す際に関数へのポインタを使ってるかどうかは別の問題
56デフォルトの名無しさん (ワッチョイ 13b1-l39z [2001:240:242e:2802:*])
2023/12/24(日) 15:53:19.34ID:D70pmwho0
別スレで見かけたトンデモ記事書いてる人だと思うけどレキシカルスコープの話と第一級関数の話とレキシカルスコープを使ったクロージャによって第一級関数を実現する話を混同してるんじゃないか

Schemeはレキシカルスコープを使ったクロージャという考え方を広く普及させた言語ではあるがレキシカルスコープや第一級関数はScheme以前の昔から実現されてたものだし
レキシカルスコープを使ったクロージャもScheme以前の昔からあった考え方

Schemeが初めてレキシカルスコープを定義したかのように書くのはやめよう
57デフォルトの名無しさん (スップ Sd5f-96gJ [1.72.3.74])
2023/12/24(日) 16:19:26.43ID:+dT+Yo8pd
>>56
ちょっと指摘させてもらうと
誰も起源の話なんてしてないよ
58デフォルトの名無しさん (アウアウウー 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:uJ8b4azy0
>>57
>>43がしてるでしょ
この人同じように間違ったことをあちこちで書いてるから指摘しただけ
60デフォルトの名無しさん (ワッチョイ 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 の関数はスコープがきつくて、
関数外のローカル変数を通さないので、第一級関数ではない。
ただし、ブロックはブロック外のローカル変数を通すから、クロージャ

他に、レシーバーとメソッドを持ち運ぶ、メソッドオブジェクトもある
65デフォルトの名無しさん (ワッチョイ d301-h9f0 [60.89.160.66])
2023/12/25(月) 08:32:20.98ID:xnbzJK+y0
>>38,62
何がどうわからないのか、を詳しく説明してくれ。
具体的なところがさっぱり分からん。
66デフォルトの名無しさん (ワッチョイ 3363-llxg [180.47.35.21])
2023/12/25(月) 21:05:49.32ID:HhwD874b0
そりゃそもそもLISPやSchemeを全く知らない人だったんでしょ
分かりやすくなる要素なんて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が追加されただけのものだ
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のように驚くのは極々自然のこと

何が固定観念なのかなんてそれが覆るまで分からないんだから固定観念を持ち込むなとか言っても何の役にも立たないよ
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 = 糞長い式
}
と書いてるんですが糞長い式を一度で済ますにはどうしたらいいですか
73デフォルトの名無しさん (ワッチョイ 1f74-rafF [211.124.81.22])
2024/01/05(金) 09:10:31.40ID:PLcvVAqJ0
>>72
いますぐ糞をして寝ることだ。
糞!
74デフォルトの名無しさん (ワッチョイ 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
}
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
そこまで糞長くないならセイウチ演算子
77デフォルトの名無しさん (ワッチョイ 4b61-7PFe [220.104.177.51])
2024/01/05(金) 11:11:29.09ID:j+cl8so10
X = 糞長い式 || X;
わかりやすい>>75でいいと思うわ
78デフォルトの名無しさん (ワッチョイ efbb-bJ3A [240f:108:3018:1:*])
2024/01/05(金) 18:15:32.86ID:xFVV62H30
カルノー図やクワイン・マクラスキー法で書けないほど複雑だと
どうにもならない
if else if else にうまく展開するか
switch 文をうまく使うとかかなあ
79デフォルトの名無しさん (ワッチョイ fd9f-stEI [122.133.203.183])
2024/01/08(月) 08:24:08.50ID:HV7sMHf30
質問させていただきます。

タグの属性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]);">とすれば取得できる
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
82デフォルトの名無しさん (ワッチョイ 1501-QrVU [60.89.10.107])
2024/01/08(月) 13:07:07.19ID:cXOMuDOl0
>>79
onclick属性値の中でもeventは使える。
<p onclick="console.log(event);">

ところで、「処理側の関数」とは?
83デフォルトの名無しさん (ワッチョイ 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 );
}
} )
} );
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");}

);
</スクリプト>
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");
}
}
89デフォルトの名無しさん (ワッチョイ 0510-zseD [180.12.82.129])
2024/01/11(木) 13:03:40.31ID:L0eqWFW50
>>87
子要素を除外したelementを取得したいってことっす
>>88
ありがとうございます試してみます
90デフォルトの名無しさん (ワッチョイ 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(); //ブラウザのスクロールを禁止にする
}
);
</スクリプト>
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
93デフォルトの名無しさん (ワッチョイ 1501-JApz [60.132.249.142])
2024/01/11(木) 16:34:13.87ID:tWeEPqJO0
>>91
preventDefault()をstopPropagation()に変えるだけでいいかもしれない
この場合は多分preventDefault()はいらない
94デフォルトの名無しさん (ワッチョイ 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'と値を切り替える
95デフォルトの名無しさん (ワッチョイ 231d-JApz [2400:4151:a4a0:6500:*])
2024/01/11(木) 22:41:54.15ID:bfPtSoSL0
>>93
ありがとうございます。
スライダーのelementにe.stopPropagation()をしたらスライダーを動かせるようになりました
>>94
ありがとうございます。試してみます。
96デフォルトの名無しさん (ワッチョイ 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
http://2chb.net/r/tech/1660898820/

Vue vs React vs Angular vs Svelte Part.11
http://2chb.net/r/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不要の場合、効率良く書くために代わりに何を使っているのか気になります。
大型のフレームワークとかでしょうか?フレームワーク使うと、ここのエレメントの参照・操作などはもはや不要になるのでしょうか?
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を学ぶのは悪手
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:bxMKu9aD0
>>99
その通り
ReactやVueに代表されるような昨今のフレームワークは開発者がDOMを直接操作しない
104デフォルトの名無しさん (ブーイモ 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が邪魔くさい時があるので使わない
どの分野を目指すのかが決まっているなら
その分野で何が主流なのかを見極めたほうがいい
106デフォルトの名無しさん (ワッチョイ 7386-XCDl [240b:12:6820:b000:*])
2024/01/28(日) 19:30:17.30ID:1z8oB9tQ0
動的に作られる特定の要素にだけイベント追加するのがラク

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.72
>>106
バニラでも祖先ノードでmatches(selectors)を使えば対応可能なので、それほどjQueryに優位性はない気がする。
それから、jQueryはバブリングフェースのみ対応という弱点がある。
バブリングしないイベントタイプに関してはaddEventListener()に優位性がある。
109デフォルトの名無しさん (ワッチョイ 99ea-Mq/i [2404:7a80:8400:8900:*])
2024/01/29(月) 01:34:06.63ID:fIBxeYXl0
他から持ってきたコードが指すjQueryが最近のじゃなくて
だれが互換性担保するのってのが一番困る
jQueryを直接つかう分には検証できるけど
依存しているライブラリは採用せんでほしい
110デフォルトの名無しさん (ワッチョイ f95a-w/9U [2400:4052:5062:9ff0:*])
2024/01/30(火) 09:12:09.86ID:GdANFjKZ0
jQuery使いの人は行き当たりばったりな人が多い
jQueryライブラリファイルの読み込みが沢山あってなんじゃこりゃみたいな
111デフォルトの名無しさん (ワッチョイ 1901-DQL8 [60.132.249.142])
2024/01/30(火) 11:06:06.79ID:kUs11O+K0
jQueryが出た頃はSelectors 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 に変わった
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が優れてて代替出来るから不要になったという話では無い
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++Rh50
>>99 (ワッチョイ 4d7c-MQtI [122.212.16.94])
これだけ回答をもらって無反応か
最近の質問者はこういう人が多いな
117デフォルトの名無しさん (アウアウエー 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ページを区別できるようになろう
120デフォルトの名無しさん (ワッチョイ 2379-u1h9 [61.192.207.171])
2024/02/04(日) 05:18:25.36ID:7DDGpERD0
でもまあwebブラウザが全てではあるよね
他に出番無いし
121デフォルトの名無しさん (ワッチョイ 0501-J3vS [60.88.93.62])
2024/02/04(日) 07:00:09.01ID:wRU34d220
今はNode.jsでサーバ側もJSってこともある
122デフォルトの名無しさん (ワッチョイ bd43-tydm [114.148.57.9])
2024/02/04(日) 10:50:30.37ID:Vls4Se8V0
そうだね
node.jsでJavaScriptはサーバサイドだけじゃくてデスクトップアプリでも使われている
代表格はVScode(node.js+Electron)がある
Webpackもnode.jsだし
身近なところでは汎用掲示板ビューアSikiがnode.js+ElectronでJavaScriptだね
   
123デフォルトの名無しさん (ワッチョイ 85a1-aUy2 [240b:12:203:6300:* [上級国民]])
2024/02/04(日) 12:44:47.52ID:ieWwGMGa0
CSSもHTMLも生で書くのは平成だしな
普通SASSやらPugやら使うだろ
JSだってWebpackやらBrowserify越しに使うやろ

まぁNode.jsじゃトランスパイル遅いから
GOやRustのツールに置き換える流れにはなってるが
じゃあ最初からCやGO、Rustでやれば良かったよねとはならないフットワークの軽さがNode.jsにはあるからな
124デフォルトの名無しさん (ワッチョイ 1b47-JMKI [2001:240:2462:f08:*])
2024/02/04(日) 12:55:11.06ID:m4gIKl+m0
Rustで書いたJSトランスパイラは速いけどRust自体のコンパイルは遅い
125デフォルトの名無しさん (ワッチョイ f54b-7hFQ [116.82.1.91])
2024/02/04(日) 23:16:57.06ID:/yrx0E0+0
あることをローカルマシンでやりたくて、Python入ってっから、それでやろうとしたらできなくて(いや正確にはすごく遅い)Node.jsになってしまった。何かは言わない。
126デフォルトの名無しさん (ワッチョイ fd09-tjaG [210.131.245.99])
2024/02/05(月) 09:44:15.86ID:Q9Y3g4UN0
node.jsの良さはJavaScriptでプログラミングできる事
Electron使えばUIもHTMLで書けるので便利
なれたらJavaScriptでデスクトップアプリを書くのが楽しくなった
127デフォルトの名無しさん (ワッチョイ abcf-aUy2 [2001:240:242f:19bc:* [上級国民]])
2024/02/05(月) 15:57:34.49ID:thNH7tNN0
>>126
Electronはファイルがデカいから
俺が何か作る時はCLI一択だわ

対話的な物作る時は
Tauriで作ってみたいなぁと思う
128デフォルトの名無しさん (ワッチョイ 9bea-EeOY [2400:2200:395:1aae:*])
2024/02/05(月) 18:19:30.64ID:1m9RfVzn0
>>118
Visual Studio Codeがjavascriptで作られている
129デフォルトの名無しさん (アウアウエー Sa13-25ln [111.239.175.167])
2024/02/05(月) 19:17:51.68ID:+Fh+RIwSa
vscodeが糞な理由が分かった気がした
130デフォルトの名無しさん (ワッチョイ 436c-OKLl [240b:12:6820:b000:*])
2024/02/06(火) 07:31:11.51ID:JsprpZ5q0
ElectronとAngularで作られてるシステム見させてもらったんだけど、reactに書き換えるって言ってたな

ならnativeでよくね?
131デフォルトの名無しさん (ラクッペペ MMcb-0t4v [133.106.91.72])
2024/02/06(火) 14:51:45.98ID:nsw90RpoM
reactとreact nativeって書き換えが必要なの?
ゴミかな?
132デフォルトの名無しさん (ワッチョイ bd43-tydm [114.148.57.9])
2024/02/06(火) 15:07:15.20ID:4bvVpi0E0
>>0127
TauriはWebViewなので
Electronの様にWebRequestを簡単に操れない
Rustに拘らないのなら
使い慣れた開発言語でWebViewを組み込んだ方が手っ取り早い
133デフォルトの名無しさん (ワッチョイ d58a-MO48 [2001:268:9ae3:e45c:*])
2024/02/07(水) 01:01:55.81ID:8Eizk2eA0
YouTube 動画で見たけど、

北米では、Flutter よりも、React Native が多いらしい
134デフォルトの名無しさん (ワッチョイ fd09-tydm [210.131.245.99])
2024/02/07(水) 10:23:32.40ID:Q0zrTHJg0
JavaScriptで書ける環境の話から
かなり脱線気味
135デフォルトの名無しさん (ワッチョイ 3743-5kwM [60.32.26.124])
2024/02/11(日) 13:06:38.03ID:4EmF6N4v0
業務がWebアプリなのは危険だと言い出した管理職がいて
Electronでチャチャとデスクトップソフト風にしたら
仕事が早いとお褒めいただいたw
何も変わっちゃいなんだけれどそれはナイショ
136デフォルトの名無しさん (ワッチョイ 0e46-9m7S [2001:240:242e:628f:*])
2024/02/11(日) 14:27:08.42ID:cAyMWgFh0
危険だという懸念が素人の無理解から来てるだけなのか妥当な懸念なのか分からないから何とも言えんな
前者なら悪くない回避策
137デフォルトの名無しさん (ワッチョイ 7702-yee3 [124.208.87.61])
2024/02/11(日) 21:47:35.74ID:VNWSIW9O0
ブラウザのアドインに情報吸われる危険性は下がるね
138デフォルトの名無しさん (ワッチョイ 2279-8TQs [61.192.207.171])
2024/02/11(日) 23:27:36.16ID:Z05z2D4x0
まあ一般的に考えて危険やな
その認識は正しいさすが管理職
139デフォルトの名無しさん (ワッチョイ f7cc-5xY/ [2400:2200:7b8:65d5:*])
2024/02/12(月) 12:55:25.07ID:3q7oTZTX0
管理職が正しい
どんなに堅牢なシステムでも狙われたら終わり
だから今はクラウドじゃなくてオンプレ回帰してる
140デフォルトの名無しさん (ワッチョイ 025c-Rmwz [211.3.240.74])
2024/02/12(月) 15:27:53.80ID:2z81MgsB0
もうネット使うなよ
141デフォルトの名無しさん (ワッチョイ a3e0-uTAv [2404:7a82:3de0:3500:*])
2024/02/12(月) 15:53:51.52ID:BAGnA5Sa0
Access でいいよ
142デフォルトの名無しさん (スッププ Sd42-hHXc [49.105.71.123])
2024/02/17(土) 10:17:04.46ID:eAolMzZEd
VBAとC#でちょくちょくアプリ作ってる程度のもんなんですけど
最近VS Code使ってjavascriptの勉強始めたわけですよ
デフォルトの環境で扱ってる限り、typoの指摘が甘くて気づくのに時間かかってしまってつらいです
Visual StudioでC#つかってるとかなり丁寧に指摘してくれるんで助かるんですが
Codeはその辺厳しいですね

Code Spell Checkerを入れてみたんですけど、よさそうな対策は他にありますか?
143デフォルトの名無しさん (ワッチョイ e200-JaQ4 [221.118.182.146])
2024/02/17(土) 10:48:07.30ID:Hugfzc2R0
JSはデフォだとどんなパラメータも持ちうるのでtypoを機械的に見つけにくい言語。
なのでjsdocゴリゴリ書く(もっとやるなら@ts-checkも)かTypeScript使うと良いよ
144デフォルトの名無しさん (スッププ Sd42-hHXc [49.105.71.123])
2024/02/17(土) 14:57:51.18ID:eAolMzZEd
>>143
ありがとうございます
TypeScriptも視野にいれてちょい調べてみます
145デフォルトの名無しさん (ワッチョイ f7d7-bM9J [240b:12:203:6300:* [上級国民]])
2024/02/17(土) 15:05:36.03ID:MLAS2UwQ0
>>142
VSと比較するならWebStormじゃなきゃ辛いし
VSCodeのままでもLSPなりで魔改造すれば頑張れるやろ
146デフォルトの名無しさん (ワッチョイ a2ec-zkg8 [2400:2200:6b4:ee70:*])
2024/02/17(土) 17:54:57.60ID:3rmfz0Aa0
>>142の言うtypoが具体的にどんなのか気になる
厳しいのはCodeじゃなくてJavaScriptなのを誤解してそう
147デフォルトの名無しさん (ワッチョイ 47f1-bM9J [2001:240:247a:6078:* [上級国民]])
2024/02/17(土) 18:56:27.31ID:snWQTW2N0
JSもDataflow Proposalsが導入されたら
普通に使い続けるんだがなぁ
148デフォルトの名無しさん (ワッチョイ 7310-HqFJ [180.12.82.129])
2024/02/19(月) 18:24:10.88ID:waVDHmuE0
マウスボタンを押しながらマウスを移動させてからマウスボタンを離すと
マウスボタンを離したときにmouseupだけでなくmousemoveも反応してしまうんだけど仕様ですか?
これ知らなくて動作が思うように行かなかった。
149デフォルトの名無しさん (ワッチョイ ef5b-WqLa [2400:2200:6b5:cb6f:*])
2024/02/20(火) 00:12:35.13ID:n1uvc9Mt0
手元で試したところmouseup直後に同じ座標でmousemoveが発火してるのを確認
うまく判定して後続処理が走らないようにすれば良さそうではある
150デフォルトの名無しさん (ワッチョイ 7310-HqFJ [180.12.82.129])
2024/02/20(火) 12:26:48.30ID:jaWYglX60
>>149
ありがとうございます
そうしてみます
151デフォルトの名無しさん (ワッチョイ 1374-A/5V [240b:12:203:6300:* [上級国民]])
2024/02/20(火) 12:38:34.44ID:SYHvuSDa0
>>148
mouseoverはマウスが何かの要素の上を移動すれば毎回出てくるから
マウスを持ってる限り常に垂れ流し続けるぞ

ドラッグアンドドロップを実装したいなら
イベント(関数発火)が非同期かつ大量に垂れ流しになること前提で組む必要がある

一案としては上のスコープで何個か変数を定義

mousedown -> 直下の要素を掴んでhold変数に放り込む
mousemove -> hold変数に値が入ってないなら即return、座標変数に座標情報を格納
mouseup -> 精算、hold変数と座標変数をnullにする
152よろしくお願いいたします (スップ Sdfa-RtHD [1.72.9.18])
2024/02/28(水) 10:59:38.09ID:j/HFCr6sd
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
153よろしくお願いいたします (スップ Sdfa-RtHD [1.72.9.18])
2024/02/28(水) 11:00:05.73ID:j/HFCr6sd
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
154デフォルトの名無しさん (ワッチョイ 470f-IZcd [2001:240:247f:f9c3:*])
2024/02/28(水) 11:09:45.91ID:74XehS+p0
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
155デフォルトの名無しさん (ワッチョイ 470f-IZcd [2001:240:247f:f9c3:*])
2024/02/28(水) 11:10:03.68ID:74XehS+p0
はじめて、質問させていただきます。

今やってることはリストボックスの行を以下で選択しています。



document.getElementById('xxxx').selectedIndex = n;



PC版ブラウザではうまくいきました。しかし、モバイル版ブラウザでは1行のドロップダウンリストになってしまいます。

https://ja.stackoverflow.com/questions/34627/html%E3%81%AEselect%E3%81%AEsize%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%821%E8%A1%8C%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C



それで、以下のjqueryの $("select").fixForSafariMobile(true); を使ったところ、表示はドロップダウンリストからリストボックスになりましたが、上のselectedIndexが動作しなくなりました。

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/src/safarimobile-multiline-select.js

https://github.com/sylvain-hamel/safarimobile-multiline-select/blob/master/experiments/experiments.html
156デフォルトの名無しさん (スップ Sdfa-RtHD [1.72.9.18])
2024/02/28(水) 11:34:49.79ID:j/HFCr6sd
すみません。5個書き込まれてしまいました。すみません。
157デフォルトの名無しさん (ワッチョイ 1314-fCbz [240b:12:203:6300:*])
2024/02/28(水) 12:19:36.32ID:bgJbuEEB0
>>152
そもそもjQueryは時代遅れだから
ReactなりVue.jsなりのJSフレームワーク覚えて移行しろ
理由は>>114

誰が作ったか分からん動くかも全く保証されてないし、10年前からもうメンテすらされてない
fixForSafariMobileなんてプラグインなんて持ち出してきて
意図通りに動きませんとか動くわけないし、アドバイス出来る訳ない

プラグインの作者は神様でも何でもない
俺らとそう変わらない腕前の奴が少しの善意と承認欲求で作ったコード片でしかない

どうしてもjQuery+プラグインでやりたいならその作者のsylvain-hamelさんにでも聞くか
GitHubで公開されてるコードを全て読んでちゃんと理解して手直ししなよ
158質問者 (スップ Sdfa-RtHD [1.72.9.18])
2024/02/28(水) 18:05:41.24ID:j/HFCr6sd
レスありがとうございます。昔からあるjsやjQueryは今は時代遅れなんですね。
ただ、今回は15年動いているものの改修作業なんです。
fixForSafariMobileはjQueryソースからselectboxからlistに変換するということはわかりました。

$("selectTarget").selectValue(ul, val)で、できそうだと思ったのですが、ulで何を渡すかまでは来ました。
valからulを検索して取得してからこれなんですかね?
159デフォルトの名無しさん (ワッチョイ 13d2-fCbz [240b:12:203:6300:*])
2024/02/29(木) 00:27:46.28ID:XLzCkQ6P0
>>158
なるほどなぁ、なら何とかツギハギで頑張ってパッチするわけか

んで、.selectValueで出来そうだと思いました!って言われても
そんなメソッドjQueryには無いぞ
https://api.jquery.com/

何らかのライブラリなりで
jQueryのメソッドを拡張・追加すれば実現出来るが
それを何の前提知識も無く「どうやって使えば良いですか?」と言われても何もアドバイス出来んぞ

jQueryはもう相当うろ覚えだが
.valメソッドとかを使うんじゃなかったか?
セレクトボックスは動きが特殊だから.valで動かんかったら他のメソッド探してみろ

jQueryの公式ドキュメントを読め
JavaScriptの話ならMDNをちゃんと読め
そうとしか言えんわ頑張れ
160質問者 (ワッチョイ 23e7-MEMs [118.87.46.101])
2024/03/01(金) 23:06:30.38ID:Id25sy0k0
いろいろとありがとうございます。
161質問者 (ワッチョイ 23e7-MEMs [118.87.46.101])
2024/03/01(金) 23:23:12.37ID:Id25sy0k0
やりたいこと
・プログラムのデバッガみたいなステップ実行ができるWEBで作成されたものを改修。
・スクロールしていくので、複数行リストボックスで現在行を選択表示して、実現。PC版では動く。
・しかし、モバイル版では、html形式の複数行リストボックスは1行のドロップダウンリストBOXになってしまう。

どうもこれは、モバイルの仕様なようで、実現するのは不可能ぽい。
過去にある人がjqueryで、モバイルで複数行リストボックスみたいな事は実現しているが、これはあくまでも表示のみで選択は不可。
・複数行リストボックスをリスト型で実現している。なので、Val()でも、スクロールして、選択表示できない。

ほかの方法で考えた方が良いですかね?ただ、改修なので、別のフレームワークに変えるのは無理ですね。
162デフォルトの名無しさん (ワッチョイ 47f6-WOak [2400:2200:714:c52d:*])
2024/03/02(土) 00:10:12.99ID:Rcnd56Cm0
sizeが指定されているSELECTタグのdisplayをnoneにして消す
代わりに自分でsize分だけのリストなりボタンなりを追加する

これをjsでモバイル表示のときだけ実現すりゃいいんじゃない
163質問者 (ワッチョイ 23e7-MEMs [118.87.46.101])
2024/03/02(土) 11:13:20.78ID:TgRbMsKE0
>代わりに自分でsize分だけのリストなりボタンなりを追加する
>これをjsでモバイル表示のときだけ実現すりゃいいんじゃない

レスありがとうございます。

データが100行あります。
今、複数行選択リストボックス(select size=25)では、25行表示できるエリアがあって、75行が隠れています。
99行目のListをスクリプトで選択(人間は選択しません。見てるだけです。)したら、自動的にそこまでスクロールしてくれます。
リスト(ul,li)ではスクロールまでしてくれず、隠れてしまって、実現はできないと思うのですが...
164質問者 (ワッチョイ 23e7-MEMs [118.87.46.101])
2024/03/02(土) 11:46:08.42ID:TgRbMsKE0
<html>
<select id='now_exe_prg_row' size=25>
<option value="1">プログラム1行目</option>
<option value="2">プログラム2行目</option>
:
<option value="100">プログラム100行目</option>
</select>

<js>
$('now_exe_prg_row').val('99')

これをlistで実現したいのですが、無理ですよね?
165デフォルトの名無しさん (ワッチョイ 47f6-WOak [2400:2200:714:c52d:*])
2024/03/02(土) 12:45:11.55ID:Rcnd56Cm0
無理じゃない
jsでdom操作はいくらでもできる
ul liでoptionのような動作をするカスタムのリストボックスも作成可能でcssフレームワークではよくつかう手法

そういうカスタムのWebComponentを作るといいよ

selectから情報をひっぱってきて外観をul liでカスタムコンポーネントを作り、liのクリックイベントリスナーでselect要素のselectedIndexを変更すればいい

select要素はモバイル環境ではdisplayをnoneにする
166デフォルトの名無しさん (ワッチョイ 47f6-WOak [2400:2200:714:c52d:*])
2024/03/02(土) 12:47:42.36ID:Rcnd56Cm0
再利用しないのならWebComponent書くまでもなくそのままjsで書けばいい
167デフォルトの名無しさん (ワッチョイ 13f5-GI/N [240b:12:203:6300:* [上級国民]])
2024/03/02(土) 12:52:06.03ID:Ac/Ek54X0
>>164
CSSでul > liの見栄えを調整しろ
・メディアクエリの画面横幅で適応されるCSSを切り分ける
・heightをliの25行分の高さに指定
・overflow: scrollを付けてul内でスクロール出来るようにする

CSSを見栄えを整える能力は
Webで食ってく行くならこの先ずっと使うから覚えろ

CSS2の頃はまだ「技術的にも無理です!」ってケース多かったが
CSS3までフル動員させたら「それお前が無知なだけ」ってケースばかりだぞ
168デフォルトの名無しさん (ワッチョイ 47f6-WOak [2400:2200:714:c52d:*])
2024/03/02(土) 13:00:31.15ID:Rcnd56Cm0
仕事で受けてるのならこのくらいできないとヤバいぞ

カスタムコンポーネントにすれば

customListBox.size = 25
customListBox.selectIndex = 99

みたいに設定できるようにメソッド追加すると便利
169デフォルトの名無しさん (ワッチョイ 8f43-04EL [114.166.8.189])
2024/03/02(土) 14:29:55.91ID:83dahe0E0
無理にiOSでも同じUIにする必要ないのと違う
ぐるぐる回るドラム式がiOSのSafari流でかっこいいじゃんと褒め殺せば
林檎ユーザー特有の優越感をくすぐりOKもらえる気がする
170デフォルトの名無しさん (ワッチョイ ba40-aDj+ [2400:2200:770:d15b:*])
2024/03/02(土) 15:39:45.46ID:Ozqjn7Yu0
>>164
細かい要件が分からないけどただそれっぽく表示するだけならこんなのでいいんじゃないの?
jsfiddle.net/sj3xkrad/1/
171質問者 (ワッチョイ 572e-lvv7 [118.86.90.123])
2024/03/03(日) 22:00:44.67ID:719to9SO0
皆さんレスありがとうございます。今日休みで明日から参考にさせていただきます
172デフォルトの名無しさん (ワッチョイ 9724-lvv7 [2001:268:9a3d:bf34:*])
2024/03/04(月) 10:08:20.56ID:ORhetY7X0
Bootstrap, Tailwind, Bulma などに、
使えそうなコンポーネントは無いの?
173デフォルトの名無しさん (ワッチョイ 9f02-ZLJX [27.91.124.53])
2024/03/05(火) 18:22:59.72ID:dRdKhnsT0
質問で、
chrome.tabs.query({}, function(tabs) {
で全タブを取得した各タブに関して、
そのタブのwindowType(appとかnormalなど)って取得できますか?
174デフォルトの名無しさん (ブーイモ MM8f-tqxy [133.159.149.112])
2024/03/05(火) 18:47:33.98ID:qENbjC0BM
>>173
個別のtab.windowIdから引けるハズ

もっとも、はじめからwindow.getAll()を使った方がいいとは思うが
175デフォルトの名無しさん (ワッチョイ 9f02-ZLJX [27.91.124.53])
2024/03/06(水) 10:35:08.32ID:c6agTDKp0
>>174
お、できた!
ありがとう!

ネットでtabs.WindowTypeってのが載ってたので、それで惑わされてた…
176デフォルトの名無しさん (ワッチョイ 9f02-ZLJX [27.91.124.53])
2024/03/06(水) 10:42:44.31ID:c6agTDKp0
>>174
取得した各tabに対して取得したかったので、
chrome.windows.get()を使いました。
177デフォルトの名無しさん (ワッチョイ 5fad-VtrB [124.141.209.120])
2024/03/29(金) 14:50:19.65ID:yy1PP2Jg0
非同期処理を同期処理から呼び出すラップ関数を作りたいのですが方法がわかりません
AIに聞いたら次のコードが返ってきましたが、当然awaitが使えないので失敗します
-------------------------------
//非asyncな呼び出し元から、asyncメソッドを呼び出し、結果が帰るまで待って返却する
function FromSyncToAsync() {
const result = await [値を返すだけの非同期な関数]();
return result
}
-------------------------------
調べても呼び出し元をasyncにする方法しかみつかりません…
178デフォルトの名無しさん (ワッチョイ 5fad-VtrB [124.141.209.120])
2024/03/29(金) 15:40:17.46ID:yy1PP2Jg0
これはエラーはおきないけど失敗。戻り値がpendingになりました
-------------------------------
function SyncToCallAsync(){
return getWasmFileLastModified().then((result) => {
// 結果を返却
return result;
});
}
-------------------------------
179デフォルトの名無しさん (ワッチョイ 5f85-qPgS [240b:12:203:6300:* [上級国民]])
2024/03/29(金) 16:32:26.02ID:utPNPoKt0
>>177
残念ながら不可能
一度非同期の世界に入ると
同期処理の世界には戻って来られないぞ

・非同期処理から値を受け取る箇所はPromise値を返す関数にする
・前処理や後処理を含めて色々やってくれる関数をasync関数で定義する
・極力此処の関数やクラスメソッドは小さくして、関係ない値を持たせない事で全てをasync関数にする事を防ぐ

JavaScriptという言語がイベント駆動やイベントループ前提で作られてる以上
こういう作りを維持し続けるしかない

まぁ、ロジックを司るデカい所は基本async関数だよ
作り直す許可を上長や顧客からもぎ取るのが仕事やね

そういう交渉が出来ないなら細かくPromise.thenで作業していくしかない
180デフォルトの名無しさん (ワッチョイ 5fad-VtrB [124.141.209.120])
2024/03/29(金) 16:55:52.54ID:yy1PP2Jg0
ありがとうございます。いくつかのAIに聞いても堂々と回答実現不能なコードばかり返してくるので困っていました。できないとわかったほうが先に進めます
181デフォルトの名無しさん (ワッチョイ df68-csuD [2400:2200:454:574d:*])
2024/03/29(金) 17:39:27.22ID:D+b6Pa3z0
現時点ではAIは不可能なことを不可能と答えないケースが多い
信用しすぎないように
182デフォルトの名無しさん (ワッチョイ 0977-nnmZ [2400:2200:587:7d4f:*])
2024/04/05(金) 21:57:54.50ID:otPTbv2G0
test
183デフォルトの名無しさん (ワッチョイ d5af-nnmZ [2400:2200:462:2f4f:*])
2024/04/05(金) 21:58:17.84ID:J45N4zHg0
test
184デフォルトの名無しさん (ワッチョイ 1bbc-AtXo [2404:7a87:26a0:9e00:*])
2024/04/13(土) 22:59:37.70ID:3VlMmSMB0
すいません、Reactの質問ってここでいいですか?
185デフォルトの名無しさん (ワッチョイ a310-0yiv [2400:2200:4d8:f2fa:*])
2024/04/13(土) 23:23:14.15ID:i7geu5sV0
まずスレ一覧をReactで検索するぐらいしてみたら?
186デフォルトの名無しさん (ワッチョイ 298b-29lp [240d:1a:7fe:ef00:*])
2024/04/20(土) 13:04:04.45ID:/vy8T+9K0
昔、私が大学でプログラミングを習ったとき(C言語でした)には円周率など特別な値については定数にしろと言われはしましたが、その他の変数については定数にしろとは言われませんでした。
Javascriptの本を今読んでいるのですが、再代入を行わない場合にはすべて「let」ではなく「const」を使えと書いてあります。
このようなことが言われるようになったのはいつ頃からでしょうか?
私がそう習わなかっただけで、昔から言われていたことでしょうか?
187デフォルトの名無しさん (ワッチョイ d15e-4mIM [240b:12:203:6300:* [上級国民]])
2024/04/20(土) 14:12:14.37ID:7dIwEOD00
>>186
JavaScriptはCromeやFirefox等のブラウザ作ってる所が各自で動作するエンジン作れと丸投げしてるが

仕様書にあたるECMAScriptが長い間ES5というバージョンのまま止まってた
その頃には変数宣言はvarのみだった

流石に今時のプログラミング言語にしようぜって事でECMAScriptの強化が始まり(ES6というプロジェクト)
最終的に2015年からは毎年強化した仕様を出しましょうという話になった

その最初の成果物とも言えるES2015で変数宣言としてvarの他にletとconstの2つが追加

for (var i = 0; i < 5; i++) {
setTimeout(() => console.log(i))
}

これの出力結果が4が5個連続で表示される
違和感があるが、
letのブロックスコープによって解消されてるのでvarはもう二度と使うなという風潮が出来た
(それ以外にもvarは関数の先頭で纏めて書かないと変な動きする箇所がちらほら見受けられ、コーディング規約で制限されていた)

また値がコロコロ変わる状態変数が多いと
登場人物がやたら多い粗悪な小説みたいになって作業者が困るので
「再代入禁止の変数」を求める声が元々多かった

その要望を汲んだ再代入禁止のconstも実装されたため
必要になるまで全てconstでプログラミングして、必要な箇所だけ最小限にletを使いましょうという風潮が比較的早く出来た
188デフォルトの名無しさん (ワッチョイ d15e-4mIM [240b:12:203:6300:* [上級国民]])
2024/04/20(土) 14:22:49.70ID:7dIwEOD00
constは直訳すれば定数だが

JSのconstは再代入しちゃいけませんよってだけで
基本は普通の変数として取り扱う
配列やオブジェクト、関数、インスタンスなんかもconstで宣言出来るね

他言語のletみたいなものと考えると良い

constで宣言したオブジェクトや配列は再代入禁止なだけで、中身は普通に加工出来てしまうのも作りとして良くない

const arr = [1, 2, 3];
arr.push(4);
console.log(arr);
// [1, 2, 3, 4]

この辺は勝手に加工しないよう運用でカバーやね
値は基本的に複製しまくってガベージコレクションで掃除してもらう

パフォーマンスチューニングで仕方なく一つの値を加工しまくる時はライブラリ化したり関数で固めたりして、メインロジックの邪魔にならないようにすること
189デフォルトの名無しさん (ワッチョイ 298b-29lp [240d:1a:7fe:ef00:*])
2024/04/20(土) 14:53:24.59ID:/vy8T+9K0
>>187-188
ありがとうございました。
190デフォルトの名無しさん (ワッチョイ 6b21-9wFU [121.2.134.225])
2024/04/20(土) 21:40:49.05ID:KOUUOZ8l0
すみません。
以前からJSフレーム・ワークについて
疑問を持っていたのですが
フレーム・ワークを使う人は、

1. JavaScriptに精通しているので
中規模程度のサイトなら
素のJavaScriptと_lodash等だけでも組めるが
効率が悪いのでフレーム・ワークを
その内部構造をも理解して使っている。

2. JavaScriptの基本的な仕組みと
DOM操作の基本は理解しているが
素のJavaScriptではサイトを作れないので
フレーム・ワークの仕様仕組みを理解して使っている。

の2種類に大別できると思うのですが
結局ブラウザは素のJavaScriptで動いているだけなので
「1」の技能習得に向かわざるを得ないと思うのですが
いかがでしょうか。
191デフォルトの名無しさん (ワッチョイ 6b55-Olxi [2400:2200:6b3:858d:*])
2024/04/20(土) 22:07:39.36ID:xlVv2mR90
どこから突っ込んでいいのかわからなくて答えようがない
192デフォルトの名無しさん (ワッチョイ d1f1-4mIM [240b:12:203:6300:* [上級国民]])
2024/04/20(土) 22:27:55.19ID:7dIwEOD00
>>190
lodashは関数型プログラミング的な値の加工を司るフレームワークだぞ
一部だけ利用させて頂いて関数片の集合体ライブラリとして使うことも出来るがな

フレームワークは機能を提供するライブラリであると共に
大きなプロダクトを作っていく為のファイル・関数・モジュール置き場をルールで区切ってここに設置してくださいねー
こういう司書さんみたいな役割も担ってる

複数人でプロダクトを触ったり
半年後にどれどれ?と帰ってきて読み直した時にナニコレ?にならない為に
プログラミングスキルの良し悪しに限らず
適切なフレームワークがあるなら使った方が良い

フレームワークを使わん機能を作る時でも
関数やファイルを作って保管するタイミングで「このフレームワークの考え方は好きだな、同じディレクトリ名を作ってそこに保管しよう」
自然とこういう発想が生まれる

なのでフレームワークを使い分けてる人間は引き出しが多くなっていき
可読性の良いプロダクトを作る能力も養われる

結局フレームワーク無しで適当に関数やファイルを作って放り投げるばかりで
読み辛いプロダクト作ってる奴なんて3流の雑魚だよ
193デフォルトの名無しさん (ワッチョイ d721-K5o/ [121.2.134.225])
2024/04/21(日) 00:20:10.62ID:R6fhRdj50
>>191 >>192
ありがとうございます。

ご教示参考にさせて頂き
精進いたします。
194デフォルトの名無しさん (ワッチョイ 1735-TxeL [2001:268:9a1c:ec74:*])
2024/04/21(日) 02:22:30.51ID:9CBVBBl20
>>186
サイの表紙のサイ本。
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017

ECMA Script は、ES6(ES2015)で大きな改正があった。
var を非推奨にして、let/const を使う

オブジェクトの場合は、たいていconst を使う。
代入はできないが、オブジェクトの中身は更新できるから

const a = { x: 1 }

a.y = 'あ'
a //=> { x: 1, y: 'あ' }

a = 2 //=> エラー。再代入はできない!
195デフォルトの名無しさん (ワッチョイ 0979-208W [110.2.64.150])
2024/04/28(日) 21:53:35.47ID:zlR73q8o0
スレ立てあらしスクリプト対抗age
196デフォルトの名無しさん (ワッチョイ 3fd8-HeGF [240b:11:92e0:d400:*])
2024/06/09(日) 04:17:47.61ID:7bXOQjjM0
お願いします。
let test = [{id: 1,name: '太郎'},{id: 2,name: '二郎'},{id: 3,name: '三郎'}];
console.log(test); //forEach実行前
test.forEach((value) => {
delete value.id;
})

console.log(test); //forEach実行後

これを実行してlogを見ると

0:{name: '太郎'}
1:{name: '二郎'}
2:{name: '三郎'}

forEach実行後だけでなく実行前の値もオブジェクトのidプロパティが削除されていたのですが理屈がわかりません。

試しに配列ではなくて配列の中のオブジェクトをconsole.logで調べると
let test = [{id: 1,name: '太郎'},{id: 2,name: '二郎'},{id: 3,name: '三郎'}];
console.log(test[0]);
test.forEach((value) => {
delete value.id;
})
console.log(test[0]);

forEach前のオブジェクトにはidプロパティが存在して
forEach後には削除されている期待通りの結果になるのですが
どんな理屈なのかわかりません。

初歩的な質問で申し訳ありませんが教えてください
197デフォルトの名無しさん (JP 0H7f-Odlx [133.106.38.39])
2024/06/09(日) 04:55:12.99ID:Wajupa1KH
paiza.ioで試したが再現しなかった

JavaScriptの実行エンジンがあらかじめ使いもせずすぐdeleteするような無駄な処理を削ぎ落とすとかしてるんじゃね?知らんけど
198デフォルトの名無しさん (ワッチョイ 23a9-YaDi [240b:12:203:6300:* [上級国民]])
2024/06/09(日) 04:59:29.38ID:eQJZpcgM0
>>196
「JavaScript 参照の値渡し」でググれ
初歩的な事柄だろ?すぐ理解出来るだろ
199デフォルトの名無しさん (JP 0H7f-Odlx [133.106.38.39])
2024/06/09(日) 05:22:49.71ID:Wajupa1KH
あーjsをhtmlに直書きしてFireFox/Edgeで読み込んだら再現したわ

jsじゃなくて開発者ツールのコンソール表示の仕様だと思う
配列内のオブジェクトみたいなネストされてるモノについては、その時点の値じゃなく表示を求められた時点の値が表示されるとかじやないかな
200デフォルトの名無しさん (ワッチョイ 3f12-HeGF [240b:11:92e0:d400:*])
2024/06/09(日) 06:13:08.40ID:7bXOQjjM0
>>198
ありがとうございます。
参照渡しがメモリ上のアドレスを参照してるのは知っていたのですが
初めのconsole.logをした時点ではまだ値を変更していないのに
なぜ変更後の値が表示されるのか理屈が分かりませんでした

>>197>>199
一度テキストに書いたものを貼ったので^^;お手数をおかけました
コンソール表示の仕様ですか、なんとなくですが納得できました
丁寧にありがとうございます。
201デフォルトの名無しさん (ワッチョイ 43e9-qUdF [222.15.234.152])
2024/06/09(日) 06:25:46.35ID:v+ppJ5f30
id を別な文字に変えると
202デフォルトの名無しさん (ワッチョイ ff0c-xov0 [240b:253:a100:e600:*])
2024/06/09(日) 08:02:18.06ID:GyoPGP3N0
全ての波【電磁波】で下記の症状が起きる
理由は電磁波が強いために起こるか電磁波が通過すれば磁気が生じて鉄分が振動して間接的に鼓膜などが振動する
マイクロ波聴覚効果を用いた音声伝送に関する検討
2018/03/05
https://www.bookpark.ne.jp/cm/ieej/detail/IEEJ-ZT181039-PDF/
マイクロ波聴覚効果 Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E6%B3%A2%E8%81%B4%E8%A6%9A%E5%8A%B9%E6%9E%9C
>>マイクロ波を照射された被験者は、クリック音やブザーのようなうなり音が聞こえる
早大、物質中の創発磁気モノポールに起こる集団振動現象を理論的に発見
2024/06/04
https://news.mynavi.jp/techplus/article/20240604-2958879/
理研、電子ビームの電子回折をアト秒で制御できる技術を開発
2024/06/06
https://news.mynavi.jp/techplus/article/20240606-2960578/
※電磁波も振動させれると記載あり
最低でも下記ノ電磁波の威力が必要なら行っている者全員補足されている
GPSの電波は超微弱
https://gigazine.net/news/20240421-gypsum-gps-receiver/
[22]米国特許5868100号
【GPS位置情報を使用した動物コントロール・システム】
一例ですが年々受信機の感度は向上している
東工大、磁束集中器を用いない高感度「ダイヤモンド量子センサ」を開発
2024/06/07
https://news.mynavi.jp/techplus/article/20240607-2961238/
電磁波音波攻撃をされている部位ごとにホルモンや異常物質などの観測
パーキンソン病の原因物質、脳内の可視化に成功
2024年6月6日 0時00分
https://www.asahi.com/articles/ASS652V7RS65ULBH00GM.html
203デフォルトの名無しさん (ワッチョイ 2301-t5YS [60.88.88.32])
2024/06/09(日) 08:21:10.79ID:kTI4ZAed0
>>196
>>199 でも指摘のある通りconsole.logの仕様かな
オブジェクトを渡した場合、開発者ツールで見ることのできるのはそのオブジェクトの現在の状態
デバッグで delete の行で止めてみれば確認できるはず
204デフォルトの名無しさん (ワッチョイ 2361-7AaF [124.87.227.97])
2024/06/09(日) 16:12:58.02ID:Q+r4d53/0
単純なオブジェクトならconsole.log(JSON.stringify(hoge))とかするのも手だね
205デフォルトの名無しさん (ワッチョイ ff96-sNpc [2400:2200:4b1:1eb8:*])
2024/06/09(日) 17:12:03.63ID:bzc/s2Ac0
ここが詳しいね↓
Chrome の console.log でハマらないために
http://nmi.jp/2022-11-14-Be-careful-about-console-log-in-chrome
206デフォルトの名無しさん (ワッチョイ 639f-VQfa [2001:268:9a20:1e45:*])
2024/06/09(日) 18:59:00.31ID:47AcMhsH0
>let test
オブジェクトtest に再代入していないから、const test を使う。
内部を変更しているだけだから(破壊的変更)

配列オブジェクトtest の、内部のオブジェクトを変更している。
value は参照渡し。
内部のオブジェクトをコピー・再構築して、引数に渡すのではない!

C/C++ 以外の言語は参照渡し。
コピー・再構築せずに、現存するオブジェクトをそのまま引数に渡す

const test = [{id: 1,name: '太郎'}];
console.log(test);
//=> forEach 実行前は、[ { id: 1, name: '太郎' } ]

test.forEach((value) => {
delete value.id;
})

console.log(test);
//=> forEach 実行後は、[ { name: '太郎' } ]
207デフォルトの名無しさん (ワッチョイ cf10-N2Ms [153.252.74.3])
2024/06/13(木) 23:54:51.41ID:UwmoZOtM0
console.log厄介だな…プリントデバッグ卒業しないと駄目か
208デフォルトの名無しさん (ワッチョイ 8f13-Sdaz [2400:2200:1d9:de7d:*])
2024/06/14(金) 00:22:57.99ID:QtqbLyKp0
卒業しなくていい
209デフォルトの名無しさん (ワッチョイ 8299-bV2f [2400:2200:4fb:564e:*])
2024/07/02(火) 17:17:44.53ID:kFuGoUXg0
ループの中でwindow.openして、ポートだけが違う同じドメインの同じ画面を複数開くとchromeのタスクマネージャーでは全部同じプロセスIDでcpuコア分散してくれないのだけれどそういうものでしょうか?
最初は同じオリジンでやってたんだけどふか高くて、ポート変えて別オリジンならプロセスも変わってコア使い回してくれるかなと思ったのだけれどそうはならず、回避方法模索中です
210デフォルトの名無しさん (ワッチョイ 1231-PoPW [2400:2200:4d2:c4bd:*])
2024/07/02(火) 20:47:10.76ID:nZysD7UJ0
詳しくは分からないけどJavaScriptのコードで関与できる部分じゃないような
まずchromeのスレあたりで挙動について質問してみたら?
211デフォルトの名無しさん (ワッチョイ 8299-bV2f [2400:2200:4fb:564e:*])
2024/07/02(火) 21:33:51.40ID:kFuGoUXg0
>>210
ありがとうございます
イロイロ試したけど挙動的にwindow.openで同じドメインのページ開くと同じプロセスに囲われてしまうっぽいです
で、hostsに同じipを別ホスト名に定義してそのホスト名で呼んだら別プロセスになってくれた
気持ち悪いけど一旦これで逃げられるか検証したいと思います
212デフォルトの名無しさん (ワッチョイ 0df5-hfHU [2404:7a82:3de0:3500:*])
2024/07/03(水) 18:29:30.68ID:YlCf6WAf0
>>211
子ウィンドウから opener で親を参照できる間柄だと CPU を分けるわけにはいかないんじゃない?
213デフォルトの名無しさん (ワッチョイ 0df5-hfHU [2404:7a82:3de0:3500:*])
2024/07/03(水) 18:30:11.37ID:YlCf6WAf0
>>212
CPU じゃない、プロセスか
214デフォルトの名無しさん (ワッチョイ 9e7e-bV2f [2400:2200:7b2:8057:*])
2024/07/03(水) 20:03:48.10ID:QL5YeWa80
>>213
大元画面
→A機能群メイン画面
→B機能群メイン画面
→C機能群メイン画面

みたいな構成で大元からワンクリックでA,B,C画面がバババっと別Windowで表示のイメージで
大元とA,B,Cは親子関係いらないしA,B,C間も参照不要だから別プロセスで上げてコア分散して欲しいんだけどA,B,Cが同一プロセスになっちゃうって感じなのです
215デフォルトの名無しさん (ワッチョイ 0df5-hfHU [2404:7a82:3de0:3500:*])
2024/07/04(木) 04:55:13.57ID:O++Z8oMX0
>>214
それらが同じドメインにあってセキュリティ上も子画面から親画面を opener で参照できちゃう間柄だから、スクリプトエンジンも同じインスタンスじゃないといけなくて同じプロセスになるってことなんじゃないかな。
間に別ドメインを挟んでリダイレクトでもするとプロセスが分かれるかもね。
216デフォルトの名無しさん (ワッチョイ f518-w2mC [2400:2200:6b6:7ae7:*])
2024/07/04(木) 08:37:45.29ID:7WHO1Maz0
Chromeのプロセスマネジメントの仕組みについて説明すると、Chromeは各タブや拡張機能を個別のプロセスで管理することで、ブラウザの安定性とセキュリティを向上させています。しかし、同じオリジン(スキーム、ホスト、ポートが同じ)からのリクエストに対しては、プロセスを共有することが一般的です。ポート番号が異なる場合でも、同じドメインからのリクエストは同じプロセスで処理されることが多いです。

CPUコアの分散については、Chromeのプロセスマネジメントに依存するため、開いているタブや実行中のスクリプトの数が多くても、同じプロセスで実行される場合があります。そのため、CPUコアが均等に分散されないことがあるのです。
217デフォルトの名無しさん (ワッチョイ 5e63-klGW [153.174.220.41])
2024/07/05(金) 09:45:00.80ID:Js1ZcPln0
acrobatで選択した単語をJavascriptに渡せないのは仕様?
api使いたいのにその前段階で躓いている
218デフォルトの名無しさん (ワッチョイ 5e63-klGW [153.174.220.41])
2024/07/05(金) 10:34:02.07ID:Js1ZcPln0
自己解決した。
渡せないんだねえ。
ハイライト経由で渡すんだね。
面倒くさくな。
219デフォルトの名無しさん (ワッチョイ 692d-RZYL [240b:12:203:6300:* [上級国民]])
2024/07/05(金) 10:37:09.77ID:Beou0vig0
ブラウザの制約を厳しくしないと
すぐクレカ番号やログイン情報を抜かれるからな

特殊な事をしたければデスクトップアプリやCLIをベースにした方が無難
220デフォルトの名無しさん (ワッチョイ 5e63-klGW [153.174.220.41])
2024/07/05(金) 11:02:03.90ID:Js1ZcPln0
デスクトップアプリのAcrobat DCで英文自動翻訳注釈作成機を作ろうとしてるんですけどねえ
221デフォルトの名無しさん (ワッチョイ 9279-oiVf [27.132.131.251])
2024/07/06(土) 16:41:04.11ID:ixa6zhE30
acrobatというかPDFに英文箇所を翻訳したいってことだよね
acrobatでやるならプラグインでも入れないと無理なんじゃないかな
やる事の割に大変な手間だから有償だったりするね
222デフォルトの名無しさん (ワッチョイ 5e63-klGW [153.174.220.41])
2024/07/06(土) 19:00:07.61ID:SVaQBkcr0
>>221
Wordで簡単に出来たことがこんなに大変で驚いてる
selectionオブジェクトがないのに驚きました
223デフォルトの名無しさん (ワッチョイ c24b-Wzaw [203.139.76.105 [上級国民]])
2024/07/27(土) 23:26:18.23ID:6J8KNmw/0
iOSのブラウザだと指をつまむようにピンチ操作するとタブ一覧になりますがこれを防ぐ方法ってないんでしょうか
touchstart, touchmove, touchendのそれぞれでpreventDefaultしても無理でした
224デフォルトの名無しさん (ワッチョイ ef7d-urqj [111.89.246.142])
2024/08/11(日) 18:28:32.58ID:tgahoj8r0
東京都の低所得者向け支援事業のページですが、
https://kurashiouen.metro.tokyo.lg.jp/login

ここのフォームに毎回手動で入れるのが面倒なんで
TamperMonkeyで入れようとしたんですが、
うまく値が入らないです。
(メアド登録すれば向こうから知らせてくるのだけどメアドを広範囲に振りまくのはなるべく避けたい)

inputタグのvalueプロパティに
値を入れてその値が画面に出ていても
そのinputにフォーカスすると消えてしまいますし、
ページのjavascriptからは正常な値が入っていると認識されていないようです。
(生年月日のselectタグも同じ)
225デフォルトの名無しさん (ワッチョイ ef7d-urqj [111.89.246.142])
2024/08/11(日) 18:28:49.67ID:tgahoj8r0
最初の世帯識別番号を全部フィルしてから(全部4ケタ)
一番下の規約同意チェックボックスをクリックしないと
ログインボタンが有効にならないという動作のようです。
(チェックボックスを.checked=trueにするだけではダメ)

うまく自動で値を入力するにはどうすればいいでしょうか?
セレニウムやAutoHotKeyを使えばできるような気もしますが
できればTamperMonkeyでやりたい
226デフォルトの名無しさん (ワッチョイ cb61-6HV9 [60.45.92.38])
2024/08/11(日) 21:08:30.34ID:lbk/Z2Eg0
>>224
それぞれイベント発火時に値を読み取るようなので
inputに対しては.valueに値設定したら.dispatchEvent(new Event("input"))
selectは.dispatchEvent(new Event("change"))
チェックボックスは.click()
227デフォルトの名無しさん (ワッチョイ ef7d-urqj [111.89.246.142])
2024/08/12(月) 18:41:31.15ID:dTbtx1jA0
>>226
できました!
ありがとうございます
なるほど

なお
チェックボックスの.click()だけはわかってたんですが、
ちゃんと書いておりませんで、すみませんです。。。
228デフォルトの名無しさん (ワッチョイ 2501-FzYF [126.51.187.51])
2024/08/23(金) 05:01:35.54ID:GNzk6D2z0
ここ1年くらいで本格的に学び始めたものです
数カ月前にmicromatchていう正規表現ライブラリに脆弱性が指摘されてCVEに登録されたみたいんなんですが
これ使ってるライブラリは芋づる式で全部npmでSeverity:moderateの警告が出てるはずで
その中にtypescript-eslintも入ってるので、これ使ってるフレームワークのテンプレート、
ほとんど影響受けてると思うんですが、各ライブラリのissueとか探しても全然話題になっていないみたいです。
皆、moderateくらいのセキュリティ警告はほとんど気にしないんですか?
それとも開発環境Onlyの依存関係だから?
229デフォルトの名無しさん (ワッチョイ db59-3ukT [2400:4176:2846:5b00:*])
2024/08/23(金) 16:45:00.54ID:bCxVN52K0
>>228
botがプルリク送ってきたとて放置
230デフォルトの名無しさん (ワッチョイ 3542-l7gQ [2001:268:c203:2913:*])
2024/08/27(火) 21:06:37.83ID:lR/Nrb/N0
バニラJSって流行ってんですか?
231デフォルトの名無しさん (ワッチョイ 6bcf-Xwm8 [153.165.155.26])
2024/08/28(水) 07:37:45.61ID:RARaVMf40
>>228
devDependency なら伝播はしないだろ。
npm audit で確認してみりゃいい。
232デフォルトの名無しさん (ワッチョイ 25a5-sJ2H [2400:4051:e720:2600:*])
2024/08/30(金) 21:40:56.02ID:iQc2EzH00
拡張機能でページの読み込み完了時に動作するスクリプトを書いたが、
完了前に発動してしまい、
ラッセーラー、ラッセーラー
2331000て事にしよっと 999よりデカい (ワッチョイ 8dc0-gcOT [2400:2200:671:c292:*])
2024/09/03(火) 06:53:50.48ID:3ofcqTVt0
《言語 javascript》
for(let i = 0;i < 10; i++){
 if (i === 99999){
  break; // とにかく脱出
 }
}
console.log("i="+i)
は、ダメである
varは非推奨らしいけど、この意味は
Ⅰ》varは、使用しないことは、推奨
Ⅱ》varは、使用は、推奨は、しない
等 イロイロな解釈の余地はあるな
by 🤡自称プロマネ

letは地球人が推奨するヤバイやつ∴
letは、宇宙人的には、使用は、🈲ずる
by 👤自称ウチュ〰人 本日もモチ暴言

質問ぢゃない質問。ウチュ〰人素晴らしい
by 🥳ウチュ〰人に忖度するバカッテスタ
234デフォルトの名無しさん (ワッチョイ c18d-v++5 [240d:f:2a0:600:*])
2024/09/09(月) 00:14:27.71ID:0tBQa8Zr0
node.jsで「http://www.amecs.co.jp/solar/index.html?hlat=36.00&hlon=140.25」の
textareaの「0,0,0,0...」という文字列を取得したいです。

以下のようなコードで実行すると結果は
 Textarea value:
となり、うまく取得できません。
もし原因がわかれば教えてください。

<コード>
const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://www.amecs.co.jp/solar/index.html?hlat=36.00&hlon=140.25');

// ページが完全に読み込まれるのを待ちます
await page.waitForSelector('#sdata');

// textareaの値を取得します
const textareaValue = await page.$eval('#sdata', el => el.value);
console.log('Textarea value:', textareaValue);

await browser.close();
})();
235デフォルトの名無しさん (ワッチョイ 1361-IU9Y [61.119.230.146])
2024/09/09(月) 01:15:24.84ID:/+PLPYVG0
>>234
非表示になってる#sdataがもう一つ存在してそっちを拾ってるせい
セレクタを'#overLayer > #sdata'等詳細にする
236デフォルトの名無しさん (ワッチョイ c1ed-BHET [240d:f:2a0:600:*])
2024/09/09(月) 07:40:59.09ID:0tBQa8Zr0
>>235
ありがとう!解決しました

ちなみに何を見ると非表示の#sdataがあることを確認できますか?
237デフォルトの名無しさん (ワッチョイ 1361-IU9Y [61.119.230.146])
2024/09/10(火) 01:02:40.92ID:pJ+fs1Xn0
>>236
ブラウザF12の開発ツールの要素タブでCtrl+Fして#sdataで検索
238デフォルトの名無しさん (ワッチョイ c1b3-BHET [240d:f:2a0:600:*])
2024/09/11(水) 23:50:48.17ID:HwHYDYw50
>>235
ありがとう!解決しました

ちなみに何を見ると非表示の#sdataがあることを確認できますか?
239デフォルトの名無しさん (ラクッペペ MM4e-co9J [133.106.89.97])
2024/09/26(木) 10:16:59.99ID:Wk3ylYwqM
document.getElementById("test_id");
を使わずに
test_id.value
と、直接使うと何か問題がありますか?
240今の所はポクのは問題は未だ無い (ワッチョイ 3ffb-dFxZ [2400:2200:5d5:5428:*])
2024/09/26(木) 21:22:05.89ID:hoEdOj9E0
📕はCanvasタグID 、📘はAタグID
─ ─ ─ ─ ─ ─ ─
🔴 = document.getElementById("📕");
🔵= document.getElementById("📘");
var 🟢 = 🔴.toDataURL("image/png");
🔵.href = 🟢;
BY 🤡 んー素晴らしい
─ ─ ─ ─ ─ ─ ─
オレッちのパソコン環境だと
pure な javascript のハズだけど
document.getElementById は不要

var 🟢 = 📕.toDataURL("image/png");
📘.href = 🟢;
BY 👤 ヤバぃのかな。こんな実装
─ ─ ─ ─ ─ ─ ─
タグID がjavascriptのグローバル変数❓
そんなのは、教科書は、見たことは、
ナイナイナイ 在る。
てか、そぅなら、以下一行で済むぢゃん
📘.href = 📕.toDataURL("image/png");
BY 🥳
─ ─ ─ ─ ─ ─ ─
地球の
javascriptは超進化したのだろうか?!
BY 👤
241デフォルトの名無しさん (ワッチョイ b310-Qw5I [180.12.82.129])
2024/10/03(木) 08:27:00.36ID:EHJ+UvFT0
const str = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
という文字列を[]で囲まれた部分を取り出して配列にしたいんだけど
どうやればいいですか?
aaa,bbb,cccとddd,eee,fffとggg,hhh,iiiの3つの要素を持つ配列ってことです
242デフォルトの名無しさん (ラクッペペ MMff-xL0Q [133.106.77.209])
2024/10/03(木) 08:38:25.14ID:G42V7GDMM
外側を[]で囲んでeval
243デフォルトの名無しさん (ワッチョイ 3f00-v4Ln [221.118.182.146])
2024/10/03(木) 08:40:52.73ID:WRRjekij0
aaaとかbbbとかの形式によってはJSON.parseで良くないか
244デフォルトの名無しさん (アウアウエー Sa72-xere [111.239.153.138])
2024/10/08(火) 10:57:59.20ID:BetB/9MOa
const str = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
str.split(",");
245デフォルトの名無しさん (アウアウエー Sa72-xere [111.239.153.138])
2024/10/08(火) 11:13:58.37ID:BetB/9MOa
// こうか?
const str = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
str.replace("[","").replaceAll("],","").replace("]","").split("[");
246デフォルトの名無しさん (アウアウエー Sa72-xere [111.239.153.138])
2024/10/08(火) 11:28:09.41ID:BetB/9MOa
// こっちか
const strArray = "[aaa,bbb,ccc],[ddd,eee,fff],[ggg,hhh,iii]";
// 角括弧で囲まれた要素を二重引用符で囲んでJSON形式に変換
const jsonFormattedStr = strArray.replace(/(\w+)/g, '"$1"');
// JSON.parse()を使って配列に変換
JSON.parse(`[${jsonFormattedStr}]`);
// [ ["aaa", "bbb", "ccc"], ["ddd", "eee", "fff"], ["ggg", "hhh", "iii"]]
247デフォルトの名無しさん (ワッチョイ ba45-1ld3 [59.147.98.100])
2024/10/11(金) 07:13:33.54ID:tTImpqsq0
久々にプログラミングしてるのですが、今のjavascriptって即時関数の中にコードを書くのが普通なんですか?
昔javascript触ってた時はそういうのなかったので
248デフォルトの名無しさん (ワッチョイ fa00-F8I7 [221.118.182.146])
2024/10/11(金) 07:51:03.87ID:o/ilE/ed0
JSは15年くらい前から無名関数使い倒す文化だと思うけど
249デフォルトの名無しさん (ワッチョイ 0b4c-V3+A [2001:240:2472:c002:*])
2024/10/11(金) 09:47:24.63ID:uRIO12V20
2005年頃には即時関数を使い倒す文化が確立されてたぞ
むしろ2015以降は代替手段ができたからQuick and Dirtyなコードじゃなければ即時関数の利用シーンはかなり減ってる
250デフォルトの名無しさん (ワッチョイ 9302-i3Tp [124.210.129.68])
2024/10/11(金) 09:52:14.18ID:SCGEnJgQ0
letとconstができたから即時間数なんてもういらない
251デフォルトの名無しさん (ベーイモ MM66-shoS [27.253.251.174])
2024/10/11(金) 11:05:14.15ID:cc/oW7+2M
個人的には 1) その場限りのコールバック、2) 一連の手続きの中で中間変数(説明変数含む)が多くなるケース、で即時関数をよく使う
後者は「結果の局所化」及び「意図と実装の分離」の効果をサクッと得られる
252デフォルトの名無しさん (ワッチョイ 0b4c-V3+A [2001:240:2472:c002:*])
2024/10/11(金) 11:29:01.18ID:uRIO12V20
即時関数は即時実行関数式(IIFE)の略で無名関数とは違うと思うんだけど>>251は無名関数について書いてない?
253デフォルトの名無しさん (ワッチョイ fa00-F8I7 [221.118.182.146])
2024/10/11(金) 11:48:22.92ID:o/ilE/ed0
すまん。俺が無名関数とか言い出したから良くなかったんだろうと思う
254デフォルトの名無しさん (ワッチョイ b70e-3m9W [2400:2200:6f3:9a36:*])
2024/10/15(火) 06:39:54.87ID:/S0KwaUI0
そもそも、基本的に関数なんていらん。
ほぼ全部、変数は、グローバル変数で宣言し
とにかく、サブルーチンは
イベンリスナー系を除いて不要だよな

てゆぅかさ、goto文がないようだし、
goto文のラベルの代わりに
無名じゃない関数
(モビロン引数はなし∵全部グローバル変数)

これが、無限年後のJavaスクリプトの常識だぜ
てか、無名関数廃止して、gotoとラベルを
無限以内に復活しようよ

これで、ド初心者の人気No.ワン言語、確実
255デフォルトの名無しさん (ワッチョイ bfa1-LGdj [2001:268:9a20:b79:*])
2024/10/15(火) 09:34:04.49ID:vvxZNDvq0
>>241
Ruby のJSON.parse なら、

require 'json'

# 改行を削除する。削除しなくても同じ結果
json_str = <<'JSON'.delete( "\n" )
[ {"あ":[{"い":1}, "x"]},
[] ]
JSON

p json_obj = JSON.parse( json_str )
#=> [{"あ"=>[{"い"=>1}, "x"]}, []]
256デフォルトの名無しさん (ワッチョイ bf7d-ZVNI [111.89.246.142])
2024/10/19(土) 15:37:37.54ID:67I5xGKq0
スクリプトの問題とは微妙に話が違いますが、
tampermonkeyじゃなくてgreasemonkey使っている人いますか?
firefoxで使ってるんですが、
greasemonkeyだと自作スクリプトって簡単にはインストールできないですよね?
zipに固めないとインストールできないと思うのですが、
みなさんはどうやってるんでしょうか?
257デフォルトの名無しさん (ワッチョイ 977c-d0HJ [122.209.8.233])
2024/11/19(火) 23:39:35.70ID:Jroeim880
JavaScriptのwindow.openで第2引数にウィンド名を指定して画面を開きます 続いて全く同じ引数で同じ画面をwindow.openで開いてるのに別ウィンドウで開いてしまいます
broadcastchannelを使っている画面でこのような事象が見られるように思えるのですが、broadcastchannelを使っている画面はwindow.openで第2引数を指定しても別ウィンドウで開いてしまうのでしょうか
因みに関連ウィンドウは全て同オリジンでウィンドウ名は半角空白も含まれない半角英文字のみです
258デフォルトの名無しさん (ワッチョイ 0ed1-iDGe [240a:61:11c0:64d6:*])
2024/11/20(水) 09:20:12.24ID:GmME3X9l0
開いたウインドウにナビゲートするのではなく?
259デフォルトの名無しさん (ワッチョイ 1a43-d0HJ [2400:2200:7db:bf56:*])
2024/11/20(水) 10:44:47.45ID:0q/8r7xH0
>>258
同じurl window.nameのページが普通に別ウィンドウで開いちゃいますね
260デフォルトの名無しさん (ワッチョイ 0b10-d0HJ [2400:2200:7f9:bb38:*])
2024/11/21(木) 20:21:30.75ID:/JpQPFMK0
>>259
単なるロジックバグでした
お騒がせしました
261デフォルトの名無しさん (JP 0Ha3-/Vqe [103.151.173.94])
2024/11/25(月) 21:37:59.73ID:NYf/jFroH?2BP(1000)

EchoAPIはVS Code環境に素晴らしい追加で、APIテストが超楽になった!
262デフォルトの名無しさん (ワッチョイ 1755-Dj8N [2400:4151:a4a0:6500:*])
2024/12/07(土) 12:00:11.18ID:Hozm9f1q0
画像の読み込みが完了したら動作するのはできたけど、動画の読み込みが完了したら動作するのはimgの部分をvideoに変えてもできませんでした。
どのようにやれば動画の読み込みが完了して動作するようにできますか?

const img_elm = document.createElement("img");
document.body.appendChild(img_elm);
img_elm.src = "./test.png";
img_elm.style.position = "absolute";
img_elm.style.top = "0px";
img_elm.style.left = "0px";

img_elm.onload = function(){

alert("画像の読み込み完了");

}
263デフォルトの名無しさん (ワッチョイ 1f61-LsAq [221.187.41.227])
2024/12/07(土) 13:15:33.00ID:UdJyqKqA0
>>262
https://developer.mozilla.org/ja/docs/Web/HTML/Element/video
video要素で発生するイベントはloadではなくloadeddataやloadedmetadata
264デフォルトの名無しさん (ワッチョイ e310-aw/E [180.12.82.129])
2024/12/07(土) 20:39:58.70ID:Ho+7zKXc0
>>263
そうなんですか
ありがとうございます
265デフォルトの名無しさん (ワッチョイ fb75-qCia [2400:2200:4de:12ad:*])
2024/12/14(土) 01:19:41.44ID:vTrcqbr80
var x = 1;
if (x===1){let z = 10;}
else if (x===2){let z = 20;}
else {let z = 30;}
console.log("z = " + z);

で、エラーになります。
でもlet をvarへ変更したら、
エラーにならず、z = 10 と表示された

このようなプログラミングでは
letは使うのは、いけない事のようです。
でも、何が何でもvarよりlet推奨ぽぃし
でも、そんなの無視してやはり、
推奨されてないvarで指定すべきですか?

とゆぅか、ポクはletとconstが嫌いですが
でも、ポクは、varが好きです。

皆さんは、varは嫌いですか❓
266デフォルトの名無しさん (ワッチョイ fbfd-gJv4 [2405:6581:23c0:5400:*])
2024/12/14(土) 06:46:27.36ID:zVdiZk6o0
釣りネタつまらん
267デフォルトの名無しさん (ワッチョイ 7901-2/hw [60.106.71.182])
2024/12/14(土) 20:33:37.99ID:B6x89OP40
>>265
好きとか嫌いとかで決めるものではない
268デフォルトの名無しさん (ワッチョイ 9c79-0Q8V [61.192.201.239])
2024/12/23(月) 07:23:14.55ID:X/5iZgP80
letの無いIEやHTAで開発する場合var宣言が必要だから好きとか嫌いとかではない
つまり古いブラウザのjavascriptでも動かしたい場合必然的にvarだらけになる
269デフォルトの名無しさん (ワッチョイ a392-/oXw [2404:7a84:8ea0:d700:*])
2024/12/26(木) 11:59:20.77ID:YCJOeewg0
JS初心者です。Electron使用しています。
カウントダウンで3→2→1と表示させようとした時、For文で組もうとするとFor文が終了した一瞬で終了してしまうので以下のように一度に作動させることで解決しました。
が、もっと効率の良い組み方があればご教示頂きたいです。よろしくお願いします。
駄目だった文(3→1に飛んでしまう)
for (let i = 3; i > 0; i--) {
setTimeout(() => {
Element.innerHTML = "";
Element.insertAdjacentHTML('beforeend', i);
}, 1000)
} return

動作しているけど改善できればと思っている文
Element.insertAdjacentHTML('beforeend', 3);
setTimeout(() => {
Element.innerHTML = "";
Element.insertAdjacentHTML('beforeend', 2);
}, 1000)
setTimeout(() => {
Element.innerHTML = "";
Element.insertAdjacentHTML('beforeend', 1);
}, 2000)
setTimeout(() => {
Element.innerHTML = "";
}, 3000)
270デフォルトの名無しさん (ワッチョイ 7001-Hs8E [60.89.148.145])
2024/12/26(木) 12:33:27.44ID:t8P1jyWN0
setTimeout の第2引数をiを使って変えればいい
iが3→2→1と減っていくなら、例えば1000*(4-i)とか
271デフォルトの名無しさん (ワッチョイ a392-/oXw [2404:7a84:8ea0:d700:*])
2024/12/26(木) 12:59:38.81ID:YCJOeewg0
>>270
ありがとうございます。動きました。
また別の問題出てきましたが、それはそれでPromiseとか勉強してちょっと頑張ります。
272デフォルトの名無しさん (ワッチョイ b6e0-cPla [2400:2200:634:ad7a:*])
2024/12/26(木) 13:44:41.88ID:rxD7DMeD0
ウチュ〰人からのお告げという事にしてほしいが
//絶対位置指定∵動かすために
XXX.style.position = "absolute";
//位置10へ動かす
XXX.style.top = 10 + "px";

( async ()=> {
for( let y=-300; y<10; y=y+10 ) {
XXX.style.top = y + "px";
await new Promise(
res => setTimeout( res, 5) );
}
XXX.style.top = "10px";
} )();

※async関数の直下、直下、直下へ
 await new Promise をコーディング
 する事が必要ぢゃ
 ただし 動作環境等による。
 でも、当方の動作環境等では、
 async関数の直下、直下、直下へ
 await new Promise をコーディング
 する事が必要ぢゃ 
273デフォルトの名無しさん (ワッチョイ 8e1a-I2L4 [2001:240:247f:48a9:*])
2024/12/26(木) 14:00:17.69ID:31Mawuna0
>>269
setInterval使え
インターバルに間に合わない可能性のある処理をするならsetTimeoutを再帰しろ

ループごとに必要もなくinsertAdjacentHTMLなんかするな
値を書き換えれば十分だろ
視覚効果を狙ってるならCSSアニメーション使え
274265 (ワッチョイ b6e0-cPla [2400:2200:634:ad7a:*])
2024/12/28(土) 04:01:21.72ID:4NKxKk420
>>265 ポクはどっちも、嫌いデス
ちょっと🤏前の自分へ返信
なに、varとlet どっちが嫌いとか
なに言ってるんだ。好き嫌いの問題でない
今のポクは、どっちも嫌い。varもlet嫌い
てっゆぅか、varとかletとかconstant
とか使わなきゃヨシ (๑•̀ㅂ•́)و✧

てなワケで、翻訳アプリ作ってみたぁ

x = 2;
if (x === 1) { y = "イチ";}
else if (x===2){y = "ニッ"}
else if (x===3){y = "サン"}
else {y = " 知ら無いアル "}
console.log("y = " + y)

なお、こんなコーディングして
エライ人に怒られても、
気にしちゃダメ在る。
275デフォルトの名無しさん (JP 0Hc2-pkw/ [60.87.218.219])
2024/12/28(土) 06:58:46.94ID:vWbq3x/3H
>>274
それは質問ではないな
質問スレは日記を書く場所ではない
276>>274 (ワッチョイ ebe0-AFTv [2400:2200:634:ad7a:*])
2024/12/30(月) 09:51:50.06ID:Yh06n1a50
>>274 ちょっと前の自分へ返答
var x7 = 1;
var x7 += 2; //var再宣言・再代入OKだろ

は❌var x7 += 2;となった
やっぱvarも使っちゃダメだよな。てなワケで
今のところは、274が大正解
277自問自答してみた (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
2025/01/24(金) 06:19:41.63ID:Dgfkru+90
👤コールバック地獄(ファンクション地獄)
setTimeout(function() {
console.log(1)
setTimeout(function() {
console.log(2)
setTimeout(function() {
console.log(3)
}, 1000) }, 1000) }, 1000)
// end setTimeout×3

ちな、下記ロジックとは違うぞ
setTimeout(function() {
console.log(1)
}, 1000)  // end setTimeout
setTimeout(function() {
console.log(2)
}, 1000) // end setTimeout
setTimeout(function() {
console.log(3)
}, 1000) // end setTimeout

🤡じゃ下記ならどお!
setTimeout(function() {
console.log(1)
}, 1000)  // end setTimeout
setTimeout(function() {
console.log(2)
}, 2000) // end setTimeout
setTimeout(function() {
console.log(3)
}, 3000) // end setTimeout
278デフォルトの名無しさん (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
2025/01/24(金) 06:29:52.53ID:Dgfkru+90
>>277の自作自演は、>>269様のご質問内容により閃いた
文学作品である。そしてこれは、
async await promise を実装したjavascriptエンジン
v8 の機能が以下にヤバイ位スゴイかを暗に物語ってる
複雑なCSSアニメーションより
javascriptでの任意の要素をアニメーション簡単に
実装できることを暗示してる。

上記文学作品を閃かせてくれた弐六九様へ感謝したい
THANK YOU FOR 269
279>>277の続編 グダグダな自問自答 (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
2025/01/25(土) 04:32:37.95ID:TAq0uG+90
🥳なるぼど、もしかして、

for(let t=1000; t<=3000; t+=1000){
setTimeout(function() {
console.log(t/1000)}, t)
}
でどう❓

👤んー、恐らくは、机上では、
非同期の部分は、setTimeout内の
関数(コールバックの意)だけ、故に
それは、以下と等価

for(let t=1000; t<=3000; t+=1000){
}
setTimeout(function() {
console.log(t/1000)}, t)

然るに、机上ぢゃ、そこで
t は undefined故に動かない

🥳 でへへ、それがちゃんと
🤡 マジ❓
🥳 マジですよー❢ルンルン❢
👤 机上OKで実際はNGはよくあるが
  机上NGで実際はOKは有りえ無い
🥳 それは、机上した👤は、
  🐴🦌 かつ、
  ポクは、超天才の証明なのだァァァ
👤 ・・・
280>>277 の続編の続編 (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
2025/01/25(土) 08:48:00.93ID:TAq0uG+90
👤ま、setTimeoutは使用はヨロシイぞ
 しかし、そのロジックは再帰でなく
 単なるループだ。for文のループ

🤡再帰?、再帰って地獄かもよ?
setTimeout(function() {
console.log(1)
setTimeout(function() {
console.log(2)
setTimeout(function() {
console.log(3)
}, 1000) }, 1000) }, 1000)

🥳コールバック地獄大好き
てか、再帰プログラミングて地獄なの❓

👤いや(⁠゜⁠o⁠゜⁠; アウウ いやいや(⁠・⁠o⁠・⁠;⁠)
🤡再帰的アルゴリズムとは
 for等のループ的アルゴリズムなら
 オレは、どっちも好きだ
 コールバック地獄は嫌いだし
 async proなんちゃらも嫌いだけど
👤矛盾した主張だな
🥳コールバック地獄とfor文組合せよう。
👤🤡 それ検討したが挫折 バイバイ
281>>277 の続編&#179; (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
2025/01/25(土) 13:17:37.74ID:TAq0uG+90
💃(←初登場:ナゾの女性 という設定)
あら、これ再帰プログラム❓
信じられなーーい。ありえなーーい。

マジ、超本物の再帰プログラミングは、
自身の関数を呼び出すのが本物です。
スナワチ、以下の通りよ。

var cnt = 0 ; // Global変数にしてみた
setTimeout(fff(), 1000) ;
function fff() {
console.log(cnt);
cnt++;
if (cnt < 5) setTimeout(fff(), 1000) ;
}

アナタ達の再帰は、再帰とは言えません。
モチロン、asyncとかfor文は不要ですよー
async forは🈲止です。

🥳これが本物の再帰なのか
コールバック地獄と同様に、
意味がわからないコードだぜっ。
本物の再帰プログラミング嫌いです。
てゆぅか、コールバック地獄大好き

🤡めちゃくちゃコードレビュー
だからぁぁぁーーforやって
async await promise が一番ですよぉっ

👤そもそもjsvsscriptなんてやめちゃえー
で、CSSでアニメーションやれ。
282デフォルトの名無しさん (ワッチョイ 6301-yzBs [60.70.162.219])
2025/01/25(土) 15:30:48.00ID:e0C8gdKs0
>>277-281
質問スレにいつまで居座るつもりなのかね
283デフォルトの名無しさん (ワッチョイ 6faf-NH4A [2400:2200:438:4658:*])
2025/01/25(土) 16:34:31.47ID:TAq0uG+90
あっそうだ、setTimeout の再帰はおいておいて
setInterval というのも在るのか。それは、時間がないから
そろそろ、オイトマとするtimeにするかも知れない
ま、再帰しなしsetTimeoutで、かつ async promiseは使用しない
のが、一番バッチリという感触。今は。では、またいつか。5日ではないいつか
(^_^)/~ 👤🤡🥳💃一同 実は同一人物だけど(⁠・⁠_⁠・⁠;⁠)
284やっぱ過疎化防止で、また来ちゃった (ワッチョイ deaf-opVO [2400:2200:438:4658:*])
2025/01/27(月) 06:54:39.55ID:/Hv0VvQW0
ふと、どうでもヨイ疑問が湧いた。

for(let t=1000; t<=3000; t+=1000){
setTimeout(function() {
console.log(t/1000)}, t)
}

と、

for(let n=1; n<=3; n+=1){
setTimeout(function() {
console.log(n)}, 1000*n)
}

どっちも問題はないけど・・・
どっちが見やすい?。
誤差とかわかり易さとかの観点で

てか、どっち に しようかな。
てか、どっち の 仕様がいいのかな。
てか、どっち を 使用しようかな
285デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]])
2025/01/27(月) 20:38:29.10ID:DmLoR8Bu0
>>284
ChatGPTに聞いてみたけど、全部は掲載できないので結論だけ転載

1. 「時間」を基準にして明示的に処理を進めたいなら t
2. 「ループ回数」を基準にするのが直感的なら n
個人的にはtの方が汎用性が高く、特に時間管理が重要なケースでは使いやすいと思います。
286デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]])
2025/01/27(月) 20:44:15.26ID:DmLoR8Bu0
1. 可読性
tを使ったコードでは、時間そのもの(1000, 2000, 3000)が直接書かれており、「時間に基づいた処理」という意図が明確。
一方、nを使ったコードでは、「ループの回数を基準に処理」していることが読み取れる。
一般的には、「時間を意識した処理」ならt、「回数を意識した処理」ならnを使ったほうが直感的です。
287デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]])
2025/01/27(月) 20:44:38.45ID:DmLoR8Bu0
2. 精度と誤差
setTimeoutは指定した時間で必ず正確に実行されるわけではなく、若干の誤差が発生します。どちらもこの点においては同じですが、**tの方が「時間の計算結果が直接書かれているため誤差の発生ポイントが少ない」**という印象を受けます。
例えば:
1000 * n // 計算で導出
1000, 2000, 3000 // そのまま指定
上記の違いから、誤差を気にするならtの方が直接的で分かりやすいです。
288デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]])
2025/01/27(月) 20:46:35.01ID:DmLoR8Bu0
3. メンテナンス性
tのコード
時間間隔を変更したい場合、初期値・上限値・増加値だけを変更すればよく、スケール感の変更がしやすい。
nのコード
「1000を掛ける」という計算式が直接書かれているため、変更時に計算式部分にも目を配る必要がある。
289デフォルトの名無しさん (ワッチョイ 96c0-zcB2 [2001:240:2472:fef0:*])
2025/01/27(月) 21:16:45.23ID:T51mrGlF0
一般常識があるやつならtを使うメリットなんて一つも無いと分かるはずなんだがChatGPTはいまだにこんな意味のない回答するんだな

俺の使ってるChatGPTと同じとは思えない
290デフォルトの名無しさん (ワッチョイ 1200-wGFo [221.118.182.158])
2025/01/27(月) 21:44:29.89ID:mnVLXxyY0
ChatGPT君はわりと利用者に忖度した回答するので、利用者次第で馬鹿にもなる
291デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]])
2025/01/27(月) 21:56:48.37ID:DmLoR8Bu0
いや、質問をそのままGPTにペーストしたよ
利用者の意見なんて1つも入れてない
292デフォルトの名無しさん (ワッチョイ 1200-wGFo [221.118.182.158])
2025/01/27(月) 22:13:58.10ID:mnVLXxyY0
質問の仕方に利用者の知識量とか思考が入り込んで、ChatGPTはそれに応じた回答をする。回答のレベルは質問のレベルに合致する
293デフォルトの名無しさん (ワッチョイ de4b-OnvR [119.150.245.179 [上級国民]])
2025/01/28(火) 03:33:19.87ID:7uzvZSX70
それはそうだけど、正確性からそんなに大きく逸脱はしてないでしょう
というか、客観的に大多数に正しいと思われる解決法を提示してくれるから助かる
無料のは今だに嘘が混じってる事が多いんだけど、有料のPlusは結構正確になった
参照してる知識量が無料のものの何倍もあるみたい
294デフォルトの名無しさん (アウアウウー Sa79-mO6r [106.130.52.8])
2025/02/06(木) 13:59:21.74ID:FTswYlc4a
外国のサイトにある動画から字幕を抜き出したくて色々試したけど上手く行かなかった(www.francetvinfo.frというとこ)
でもffmpegだとあっさり成功した
もしJavaScriptに詳しければffmpegというツールに頼らず抜き出せたのだろうか?
chatGPTに聞くとDOMで作成してるみたいな答えが帰ってきたので字幕作成はJavaScriptで行っているのかなと思った
今字幕抜き出せた喜びとツールに頼った悔しさが入り混じってるけど皆なら自力で抜き出せた?
295デフォルトの名無しさん (JP 0H96-qIVI [133.106.33.6])
2025/02/13(木) 12:33:25.69ID:DZyx9aKAH
失礼します。
insertBeforeでHTML要素にnodeを追加する際、複数ある要素(class)の1番最後にのみnodeを挿入したいのですが、可能でしょうか?


<div class="unko"></div> //1
<div class="unko"></div> //2
<div class="unko"></div> //3
<div class="unko"></div> //4
<div class="unko"></div> //~以下ランダムで増減


このように、ユーザーが投稿するコメントのようなランダムで増減するclass要素があり、その繰り返しの1番最後にnodeを挿入したいのですが、

hoge[0].parentNode.insertBefore(elmDiv, hoge[0].nextSibling)

これを改良して

hoge[※最後の要素].parentNode.insertBefore(elmDiv, hoge[※最後の要素].nextSibling)

とするにはどうすればいいでしょうか?

そもそも不可能である場合、不可能であると断言して頂けると幸いです。
296デフォルトの名無しさん (ワッチョイ 9eba-k2ZP [2001:240:241a:56bf:*])
2025/02/13(木) 13:01:37.54ID:xGLXSNfR0
:last-of-typeとか:last-childとかで出来るけどそういうの知らなくても”配列の長さ-1”くらいは思いつこうよ
297295 (ワッチョイ b149-GKZ3 [180.221.149.54])
2025/02/13(木) 13:14:34.23ID:8KNio/Em0
> 296
つまりあまたはわたしをアホとおっしゃるのですか?
298295 (ワッチョイ b149-GKZ3 [180.221.149.54])
2025/02/13(木) 13:15:37.17ID:8KNio/Em0
💩
299デフォルトの名無しさん (ワッチョイ 5e0b-XAIF [153.164.41.34])
2025/02/13(木) 13:39:50.07ID:tamKTj1t0
>>295
hoge[hoge.length-1].insertAdjacentElement("afterend", elemDiv);

lud20250302153133
このスレへの固定リンク: http://5chb.net/r/tech/1702111239/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「JavaScript の質問用スレッド vol.126 ->画像>2枚 」を見た人も見ています:
+ JavaScript の質問用スレッド vol.136 +
+ JavaScript の質問用スレッド vol.129 +
+ JavaScript の質問用スレッド vol.129 +
+ JavaScript の質問用スレッド vol.144 +
+ JavaScript の質問用スレッド vol.137 +
+ JavaScript の質問用スレッド vol.123 +
+ JavaScript の質問用スレッド vol.124 +
+ jQuery 質問用スレッド vol.7 +
CANYON/キャニオン インプレ・質問用スレッド Part1
★スレッド立てるまでもない質問用スレッド★その26
Civilization6 (Civ6) 質問スレッド Vol.7
Civilization6 (CIV6) 質問スレッド Vol.2
jQuery 質問スレッド vol.8
★PUNK初心者質問スレッドVol.10★
【モバゲー】日本専用スレッド【質問広場】
鉱物初心者交流・質問専用スレッド part1
【DTM】悶絶★初心者質問スレッドVol.82【5歳児】
【DTM】悶絶★初心者質問スレッドVol.74【4歳児】
【DTM】初心者質問スレッドVol.85ワッチョイ有り
【DTM】初心者質問スレッドVol.81ワッチョイ有り
【DTM】悶絶★初心者質問スレッドVol.74【5歳児】
【DTM】初心者質問スレッドVol.84ワッチョイ無し
【DTM】悶絶★初心者質問スレッドVol.76【5歳児】
【DTM】初心者質問スレッドVol.84ワッチョイ有り
【DTM】初心者質問スレッドVol.84ワッチョイ有り
【DTM】初心者質問スレッドVol.81ワッチョイ無し
【DTM】初心者質問スレッドVol.86ワッチョイ無し
Windows 7 質問スレッド Part66
Blender 初心者質問スレッド Part36
Blender 初心者質問スレッド Part46
Mozilla Firefox質問スレッド Part186
スレッドを立てるまでもない質問スレッド Part 356
質問スレッド
相続税の質問スレッド
経済学質問スレッド その1
晴空物語 質問スレッド Part14
総合質問スレッド Part8
●●●相談・質問スレッド
なんでも質問スレッド in サプリ板
Phone 質問スレッド part48
Windows11質問スレッド Part5
囲碁・初心者専用の質問スレッド 第33局
iPhone 質問スレッド part41
柏木さんがなんでも質問に答えるスレッド
質問でも雑談でもOKのスレッド 149
囲碁・初心者専用の質問スレッド 第32局
◆MUGEN 総合質問スレッド 19◆
ヤクオフ初心者質問スレッド 566
大人モバ総合質問スレッド ©bbspink.com
Windows 10 質問スレッド Part45
Windows 10 質問スレッド Part67
Windows 7 質問スレッド Part65
Windows 10 質問スレッド Part93
Windows 10 質問スレッド Part77
Elona初心者質問スレッド その123
Windows総合質問スレッド Part4
Windows 10 質問スレッド Part58
Windows 10 質問スレッド Part38
Windows 10 質問スレッド Part22
Windows 10 質問スレッド Part72
Windows 10 質問スレッド Part92
Elona初心者質問スレッド その121
ヤフオク初心者質問スレッド 806問目
ヤフオク初心者質問スレッド 822問目
総合!靴についての質問スレッド 39足目
Shade 相談/質問スレッド Ver.47.0
23:52:06 up 65 days, 50 min, 0 users, load average: 9.25, 9.96, 9.73

in 1.9832329750061 sec @1.9832329750061@0b7 on 062112