JavaScript の質問用スレッド vol.125

レス数が1000を超えています。これ以上書き込みはできません。
2022/08/07(日) 15:57:40.26ID:TS5TGpUB0
!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.124
https://mevius.5ch.net/test/read.cgi/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
2023/10/26(木) 12:52:26.88ID:jSMDhhI40
>>933
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
2023/10/26(木) 12:52:36.47ID:jSMDhhI40
>>933
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
936デフォルトの名無しさん (ワッチョイ a710-7pXc [180.12.82.129])
垢版 |
2023/10/26(木) 13:05:50.11ID:m2KCtDyt0
canvasでarc関数でx:100,y:100の位置に青で塗りつぶした半径3の円を描いたんですが
これと同じ位置に同じ半径で同じ色で塗りつぶした円を描くと四角形ぽくなってちょっと大きくなって表示されます。
背景を塗りつぶして1回目に描いた円を一度消去してから2回目の円を描いても同じでした。
文字の場合でも同じ位置に同じ文字を重ね書きすると太くなっちゃいました。
どうすればちゃんと同じ位置に同じ物を描いても太くならないようにできますか?
2023/10/26(木) 22:17:18.42ID:npbiXWKI0
>>933
それは質問ではなくて丸投げと言います
2023/10/27(金) 08:04:19.82ID:93zv19AS0
>>933
競技プログラミングのスレで聞いて!

これは、UnionFind で、3つの木になる

UnionFind は、プログラミング・コンテスト・チャレンジブック(蟻本)に載っている
939デフォルトの名無しさん (ワッチョイ 639d-XI6K [109.236.1.125])
垢版 |
2023/11/13(月) 18:52:10.34ID:qEXCkkFf0
alertのテキストをコピペする方法とかってご存知ありませんか?

どなたか知恵をお貸しください
2023/11/13(月) 22:10:22.42ID:FIfUHr+c0
質問したいなら詳しく書こうね
2023/11/14(火) 02:43:20.79ID:MYkZh+2q0
>>939
alertのテキストをコピーするには、通常はウェブページ上でalertが表示されている状態で、テキストを選択して右クリックし、"Copy"や"コピー"を選択する方法があります。ただし、ウェブサイトのalertはJavaScriptで生成されるもので、そのテキストを直接コピーする方法は制限されていることがあります。可能であれば、そのテキストを手入力でコピーすることができます。
2023/11/14(火) 19:07:48.92ID:WEqhXBJy0
検索すれば?
コピーを防ぐ方法は、幾つかある

ブラウザのF12 ボタンの開発者ツールで調べるとか
2023/11/14(火) 20:45:30.47ID:Mc/CoQSw0
>>939
マルチボスト先に答えがある
https://mevius.5ch.net/test/read.cgi/hp/1478002550/706-
2023/11/15(水) 11:30:55.95ID:FHoogchzH
>>936

亀だけど
fill()が複数回呼ばれると円が太るみたい
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
でなく、
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
でやると円が太らなかったよ
945デフォルトの名無しさん (ワッチョイ e374-n7Dx [211.124.81.22])
垢版 |
2023/11/15(水) 12:39:52.38ID:D0hDoGTF0
亀が2chに書き込みにやってきた
2023/11/17(金) 20:41:48.61ID:oUDu0vRd0
console.log()のlogってどういう意味ですか?
printとかputじゃなくてlogで出力って珍しいですね
947デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
垢版 |
2023/11/18(土) 14:13:31.53ID:mHEv1Kbm0
consoleオブジェクトのログ情報を出力するためのlogメソッド…
948デフォルトの名無しさん (アウアウウー Saa1-UHOz [106.180.4.201])
垢版 |
2023/11/18(土) 16:58:25.29ID:rXJKESWNa
blogのlog
2023/11/18(土) 18:26:17.47ID:vb+682X10
彼岸島の名産品
2023/11/18(土) 23:53:58.59ID:rj8Lk8BJ0
…どこまで信じたらいいの?

>>947
ありがとうございます
2023/11/19(日) 10:42:09.47ID:HAfvoabg0
いえいえ
2023/11/20(月) 16:19:56.96ID:q8v/AXQl0
const arr =Array(3).fill([]);
arr[1].push(0);
console.log(arr);

この場合arrは[[], [0],[]]になっていることを期待するのですが実際には[[0], [0], [0]]となっています
まったく納得いかないのですがなぜですか
2023/11/20(月) 16:41:25.42ID:LC62eXy40
>>952
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#value
>配列を埋める値。もし value がオブジェクトであれば、配列のそれぞれの要素はそのオブジェクトを参照します。
2023/11/20(月) 16:49:32.78ID:q8v/AXQl0
>>953
fillがそういう仕様なんですね
納得です
ありがとうございました
2023/11/21(火) 08:31:09.87ID:reAksYQu0
いえいえ
2023/11/21(火) 23:06:08.47ID:Hk8WzggI0
変数宣言の際に、letよりconstを積極的に使うべき、とされているのはなぜでしょうか?
後で値を変えられるletの方が便利だと思うのですが
2023/11/22(水) 00:26:41.03ID:nlRha+4K0
JSにかかわらず変数は使ってる道中に値変換したり変数使いまわしてるとエラーの種になりやすいし、それを防止するのが大きいかな
配列やオブジェクトの値はconstでも変えられるし

昔はそういうごちゃごちゃ動く変数のトレースするのもプログラム組むやつの能力ってされてたなぁ
2023/11/22(水) 03:01:31.39ID:KDSVu4Ne0
コードを上から読んでいく時にconstだとこの値は後から変わることがないと決めつけて読むことができる
letだとどこかで書き換えられるのに注意しながら読まないといけない
959デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
垢版 |
2023/11/22(水) 10:49:23.49ID:5A+ZhXZi0
可読性の部分が大きいよね
varで変数定義しているクソコードなんかリファクタリングしたくないだろ?
960デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
垢版 |
2023/11/22(水) 11:06:59.29ID:5A+ZhXZi0
constで最初から定義した後にそれが動的な値だった場合タイプエラーを起こしてからletに書き換える事はあるけど最初からletで定義しちゃうと後々constに書き換えた場合もしそれが動的な値ならプログラムそのものが動かなくなって新たなるバグを生むでしょう?
最初は縛りを強くしておいて後から緩めるはあるけど逆はないですよ
2023/11/22(水) 15:03:20.05ID:hF+LjdVs0
条件によって const の値を変えられるようになるといいんだけどな。
簡単なのなら参考演算子でやれるけど。
962デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
垢版 |
2023/11/22(水) 20:15:59.75ID:5A+ZhXZi0
>>961
よくわからないけどそれってconst使う意味あるの?
2023/11/22(水) 20:54:04.80ID:FIiKhTS50
察するに初期代入時に場合によって違う値を入れたいということだろう
三項演算子を出してるし
2023/11/22(水) 21:26:20.43ID:VeafCB/q0
答えてくれた方々ありがとうございました
積極的にconstを使っていきたいと思います
2023/11/22(水) 21:54:03.90ID:7CtxEw9g0
>>962
うまい例になってるかわからないけど、何かのプロパティに値が入ってたらそれ、無ければデフォルト値を const に入れたいとか、この条件がもっと複雑になった感じとか。
あるいは、何かの基準座標を const に入れたいけどその値は一発では求まらないとか。
単にこれだけなら中間的な変数を使って値を求めて、最後に const に代入するって手もあるだろうけど、中間的な変数はスコープから追い出したいのにできないよね。

const x;
{
let a, b, c;
:
x = a + b * c;
}

みたいにできれば a b c はスコープから追い出せるけど、実際は

let a, b, c;
:
const x = a + b * c;

ってやらざるを得なくて、x が存在するスコープから a b c を追い出せない。
この計算を function に切り出せよと言うかもしれないけど、できればそうすりゃいいけどどこにでも適用できるというわけでもない。
2023/11/22(水) 22:23:44.12ID:lZKHNjwl0
調べてみると苦肉の策で↓みたいな書き方が紹介されてたけど可読性考えるとどうだろうね
const x = (() => {
let a, b, c;
:
return a + b * c;
})();
2023/11/22(水) 22:52:37.25ID:8gAUwwkj0
関数に切り出さない意味がわからない
2023/11/23(木) 00:25:34.14ID:9np+Rtrn0
欲しいのはただのブロックなのに関数として書かなければならないというのが余計なことをやらされている感はある。
2023/11/23(木) 01:53:09.12ID:pAGXWPD10
var使え
2023/11/23(木) 15:16:53.54ID:d47OCYFA0
>>966
処理の結果として複数の const、例えば x y を求めたい時は、その書き方でも難があるよね
2023/11/23(木) 15:39:42.20ID:98Thj8w70
>>970
その場合はタプルで受け取るようにすれば問題ないよ
const [x, y] = (() => {
let a, b, c;
:
return [a + b * c, a * b + c];
})();
2023/11/23(木) 15:58:06.00ID:d47OCYFA0
>>971
ああ、それが現状の最適解な気がするね。
後で汎用関数化したくなっても対応しやすいし。
まあ >>968 みたいな感覚はあるし、関数としてのコストも気になっちゃうけど。
2023/11/29(水) 23:49:26.08ID:oO9dmq1+0
const num = 1;
とした時、numはCやJavaのint型と違って、1という値のオブジェクトを参照している
という理解でよろしいでしょうか?
(numという名前でラベリングされたメモリ領域には、1そのものではなく
数値オブジェクトへの参照値が入っている?)
2023/11/30(木) 04:02:01.17ID:uIFlL3tD0
>>973
1 はプリミティブ値。
Object型ではない。
2023/11/30(木) 22:41:28.93ID:l5hD/Y3Y0
>>974
レスありがとうございます

分かりました
文字列('Hello World'など)もプリミティブなんですよね
どうやって内部で実装されてるんですか?
2023/11/30(木) 22:57:08.84ID:mSFTiyup0
MDNをまず読みましょう
https://developer.mozilla.org/en-US/docs/Glossary/Primitive
2023/11/30(木) 23:13:04.35ID:5k4SwxyG0
>>973
実装的には全て参照扱いだよ
ただし数値の場合は参照(ポインタ)そのものに数値を埋め込むという方法
だから全て参照だけどメモリは消費しないというハック
2023/12/01(金) 01:54:56.09ID:Bo4sqMI/0
>>975
質問が大雑把過ぎる
もっと具体的に詳しく
2023/12/02(土) 04:48:25.07ID:3pMMmiCv0
返信くれた方々、ありがとうございます

>>976
TOEICのスコア400点台だったので厳しいです…

>>977
参照扱いでもプリミティブ型って言うんですか?
Javaではintやdoubleなど参照を用いずにデータを記憶する型をプリミティブ型と
呼んでいたので、少し混乱しています…

>>978
すみません、以後気を付けます
2023/12/02(土) 10:49:58.14ID:qpNh64Np0
>>977は気にしなくていいよ
英語苦手でもプリミティブには7つの型がある、ぐらいは読めるだろう
あと日本語のページがないか調べるぐらいはしよう
https://developer.mozilla.org/ja/docs/Glossary/Primitive
2023/12/02(土) 11:43:24.98ID:/unkk9Eq0
>>979
そもそもそんなことを気にしてどうするの?
何がしたくての質問?

ぶっちゃけ表向き気にするべきなのは、その変数 a を別の変数 b に代入して、b を操作したら a まで同じように変わるのかどうかだけだと思うよ。
2023/12/03(日) 12:45:58.94ID:FUDcVj1n0
>>980
分かりました
ありがとうございます

>>981
レスありがとうございます
うーん、まあこだわりとでも言いましょうか…
個人的にはそこまで知っておくことは無駄ではないと思います
2023/12/03(日) 13:08:07.26ID:tV1DejKO0
>>975の質問なんかは明らかに自分のスキルや理解力に不相応なことを知ろうとしてない?
それを知ろうとするのはもっと力を付けてからがいいと思う
2023/12/03(日) 14:24:30.66ID:GsReymgf0
>>982
実装を知る以前に仕様は理解してる?
「仕様書のここをどうやって実装しているか、を知りたい」なら誰かしら答えるかもしれないが、そのようなレベルにも見えない
仕様を理解せずして、実装を理解するのは無理
2023/12/03(日) 17:15:18.22ID:TpyXoIhbM
>>984
乗っかって補足すると、同じ仕様の実装なんて何通りもあるのよね。
そこであえて実装を知りたいというなら、その理由も書く方が間違いないよね。
2023/12/04(月) 23:09:24.91ID:GWbm6wp00
レスありがとうございます
遅くなってすいません

>>983
そうですよね
まあ単純に、文字列である以上、変数用に確保したメモリ領域内に簡単には収まらない
だろうなと推測したんです
でも不変な値なら参照使わなくても収まるのかな

>>984
微妙です
入門書を読んで間もないレベルです

>>985
分かりました
まあ実装って言い回しが大仰でした
参照を使ってあるかどうかを特に知りたかったんです
2023/12/04(月) 23:27:59.49ID:lRGkzbxI0
そのレベルを気にする人はもうフレームワーク作るレベルだろう
2023/12/05(火) 20:06:09.74ID:gtr9NjJza
>>982
あ、ややこしい書き方してすまん
単にuint64_tが値の参照でオブジェクトの場合はポインタが入ってて
整数の場合はそのまま使ってると言うことを言いたかっただけ
typedef uint64_t JsValue;

JsValueが「値」を指す参照

JsValue obj = createObject(); // Object
JsValue smi = createSmi(); // Small Integer

こうすることでオブジェクトも数値も同じように扱える
V8もJSCも全部これ
2023/12/05(火) 23:32:22.63ID:c1y4Tvg20
レスありがとうございます

>>987
そうなんですかね

>>988
内容がハイレベルですね
2023/12/06(水) 00:21:20.37ID:HaZOzd170
>>986
入門書を読んで間もないレベルなら、口が避けても「仕様を理解した」とは言えない
実装を覚えるのは仕様書を読めるようになった後だろう
https://262.ecma-international.org/14.0/
2023/12/09(土) 10:39:43.45ID:npLWblUF0
素人な質問で申し訳有りません。
下記のスクリプトで何故か関数丸々出力されてしまうのです。
テキストでは改行が多すぎる為、投稿出来ないため画像で申し訳有りません。
下のグレーのフォントが出力結果です。
出力指定していないので、何も出力されないはずなのですが…。

https://i.imgur.com/tJnx1oK.jpg
2023/12/09(土) 11:31:37.42ID:In8GNdRi0
>>991
画像でコート見るのはしんどいので、>>2のサイト使って現象が再現するコードを掲示してほしい
993デフォルトの名無しさん (ワッチョイ 2302-tASO [27.94.242.45])
垢版 |
2023/12/09(土) 14:27:43.55ID:iYG1bkmj0
>>991
どうでもいいけど関数名の付け方にセンスないな
コメントもつける意味がないゴミ
変換ならconvertとかにすりゃいいのに…
2023/12/09(土) 15:46:37.17ID:W9usxQKOr
/や:が入ってるのを明示してるのはコメントとして意味があるだろう
2023/12/09(土) 16:39:16.69ID:0uXDsiHr0
classのインスタンスで#プライベートメソッドにアクセスする方法ってないんでしょうか?
2023/12/09(土) 17:13:36.47ID:YETt4fHv0
>>990
はい
リンクありがとうございます
2023/12/09(土) 17:46:24.03ID:Mnb70srnr
なかったんで次スレ立てた
https://mevius.5ch.net/test/read.cgi/tech/1702111239/
2023/12/10(日) 11:19:27.25ID:ngtmyS7f0
>>992
サイトの使い方がいまいち分からず試してましたが、サイトでは症状が再現できず想定通りの挙動でした。これは作ってるアプリ側に原因があるのでしょうかね。
mementoというdbアプリだったのですが。

>>993
自覚はあります。プログラムに興味を持ち練習はじめなので勘弁してやってください。思いつかないんですorz
2023/12/10(日) 11:47:16.59ID:v6fUhk/70
>>998
>>991を実行してる環境について書いてくれないと
コードで見えてる部分以外については知りようがないんだから

あと関数名を思いつかないならAIに候補を挙げさせるのはアリ

続きが必要なら次スレにどうぞ
1000デフォルトの名無しさん (ワッチョイ 8f18-Xgad [2001:268:98e3:8067:*])
垢版 |
2023/12/16(土) 00:37:24.71ID:xiFcB2tC0
テスト
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 495日 8時間 39分 45秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況