[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
951: (ワッチョイ e300-5mk2 [2400:2200:7f1:bf91:*]) 2023/11/19(日)10:42 ID:HAfvoabg0(1) AAS
いえいえ
952
(1): (ワッチョイ 0556-2Aft [202.71.49.47]) 2023/11/20(月)16:19 ID:q8v/AXQl0(1/2) AAS
const arr =Array(3).fill([]);
arr[1].push(0);
console.log(arr);

この場合arrは[[], [0],[]]になっていることを期待するのですが実際には[[0], [0], [0]]となっています
まったく納得いかないのですがなぜですか
953
(1): (ワッチョイ 83f6-YW6P [2400:2200:6f1:ae40:*]) 2023/11/20(月)16:41 ID:LC62eXy40(1) AAS
>>952
外部リンク:developer.mozilla.org
>配列を埋める値。もし value がオブジェクトであれば、配列のそれぞれの要素はそのオブジェクトを参照します。
954: (ワッチョイ 0556-2Aft [202.71.49.47]) 2023/11/20(月)16:49 ID:q8v/AXQl0(2/2) AAS
>>953
fillがそういう仕様なんですね
納得です
ありがとうございました
955: (ワッチョイ eb79-5mk2 [2400:2200:7f6:ca17:*]) 2023/11/21(火)08:31 ID:reAksYQu0(1) AAS
いえいえ
956: (ワッチョイ 4d1d-TQK0 [180.178.89.53 [上級国民]]) 2023/11/21(火)23:06 ID:Hk8WzggI0(1) AAS
変数宣言の際に、letよりconstを積極的に使うべき、とされているのはなぜでしょうか?
後で値を変えられるletの方が便利だと思うのですが
957: (ワッチョイ 0d5f-yKFx [14.8.104.32]) 2023/11/22(水)00:26 ID:nlRha+4K0(1) AAS
JSにかかわらず変数は使ってる道中に値変換したり変数使いまわしてるとエラーの種になりやすいし、それを防止するのが大きいかな
配列やオブジェクトの値はconstでも変えられるし

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

const x;
{
let a, b, c;
省9
966
(1): (ワッチョイ 250c-YW6P [2400:2200:6d0:af1d:*]) 2023/11/22(水)22:23 ID:lZKHNjwl0(1) AAS
調べてみると苦肉の策で↓みたいな書き方が紹介されてたけど可読性考えるとどうだろうね
const x = (() => {
let a, b, c;
:
return a + b * c;
})();
967: (ワッチョイ e3c2-fy5B [2001:240:2467:98ce:*]) 2023/11/22(水)22:52 ID:8gAUwwkj0(1) AAS
関数に切り出さない意味がわからない
968
(1): (ワッチョイ 6bcf-ekUX [153.206.41.110]) 2023/11/23(木)00:25 ID:9np+Rtrn0(1) AAS
欲しいのはただのブロックなのに関数として書かなければならないというのが余計なことをやらされている感はある。
969: (ワッチョイ cd3b-8MWH [2409:251:9020:2100:*]) 2023/11/23(木)01:53 ID:pAGXWPD10(1) AAS
var使え
970
(1): (ワッチョイ 25ca-SdNv [122.132.80.240]) 2023/11/23(木)15:16 ID:d47OCYFA0(1/2) AAS
>>966
処理の結果として複数の const、例えば x y を求めたい時は、その書き方でも難があるよね
971
(1): (ワッチョイ 2d12-YW6P [2400:2200:6f7:92d9:*]) 2023/11/23(木)15:39 ID:98Thj8w70(1) AAS
>>970
その場合はタプルで受け取るようにすれば問題ないよ
const [x, y] = (() => {
let a, b, c;
:
return [a + b * c, a * b + c];
})();
972: (ワッチョイ 25ca-SdNv [122.132.80.240]) 2023/11/23(木)15:58 ID:d47OCYFA0(2/2) AAS
>>971
ああ、それが現状の最適解な気がするね。
後で汎用関数化したくなっても対応しやすいし。
まあ >>968 みたいな感覚はあるし、関数としてのコストも気になっちゃうけど。
973
(2): (ワッチョイ 551d-1fOb [180.178.89.53]) 2023/11/29(水)23:49 ID:oO9dmq1+0(1) AAS
const num = 1;
とした時、numはCやJavaのint型と違って、1という値のオブジェクトを参照している
という理解でよろしいでしょうか?
(numという名前でラベリングされたメモリ領域には、1そのものではなく
数値オブジェクトへの参照値が入っている?)
974
(1): (ワッチョイ e501-3M3b [60.118.124.10]) 2023/11/30(木)04:02 ID:uIFlL3tD0(1) AAS
>>973
1 はプリミティブ値。
Object型ではない。
975
(2): 973 (ワッチョイ 551d-1fOb [180.178.89.53]) 2023/11/30(木)22:41 ID:l5hD/Y3Y0(1) AAS
>>974
レスありがとうございます

分かりました
文字列('Hello World'など)もプリミティブなんですよね
どうやって内部で実装されてるんですか?
976
(1): (ワッチョイ cb01-0ikQ [2001:240:2461:5256:*]) 2023/11/30(木)22:57 ID:mSFTiyup0(1) AAS
MDNをまず読みましょう
外部リンク:developer.mozilla.org
977
(2): (ワッチョイ 25f0-5Z4W [220.146.53.208]) 2023/11/30(木)23:13 ID:5k4SwxyG0(1) AAS
>>973
実装的には全て参照扱いだよ
ただし数値の場合は参照(ポインタ)そのものに数値を埋め込むという方法
だから全て参照だけどメモリは消費しないというハック
978
(1): (ワッチョイ e501-3M3b [60.118.124.10]) 2023/12/01(金)01:54 ID:Bo4sqMI/0(1) AAS
>>975
質問が大雑把過ぎる
もっと具体的に詳しく
979
(1): 975 (ワッチョイ 691d-zrcD [180.178.89.53]) 2023/12/02(土)04:48 ID:3pMMmiCv0(1) AAS
返信くれた方々、ありがとうございます

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

>>977
参照扱いでもプリミティブ型って言うんですか?
Javaではintやdoubleなど参照を用いずにデータを記憶する型をプリミティブ型と
呼んでいたので、少し混乱しています…
省2
980
(1): (ワッチョイ 99ca-egvc [2400:2200:6f3:92ab:*]) 2023/12/02(土)10:49 ID:qpNh64Np0(1) AAS
>>977は気にしなくていいよ
英語苦手でもプリミティブには7つの型がある、ぐらいは読めるだろう
あと日本語のページがないか調べるぐらいはしよう
外部リンク:developer.mozilla.org
981
(1): (ワッチョイ 91ca-j/4L [122.132.80.240]) 2023/12/02(土)11:43 ID:/unkk9Eq0(1) AAS
>>979
そもそもそんなことを気にしてどうするの?
何がしたくての質問?

ぶっちゃけ表向き気にするべきなのは、その変数 a を別の変数 b に代入して、b を操作したら a まで同じように変わるのかどうかだけだと思うよ。
982
(2): 979 (ワッチョイ 691d-zrcD [180.178.89.53]) 2023/12/03(日)12:45 ID:FUDcVj1n0(1) AAS
>>980
分かりました
ありがとうございます

>>981
レスありがとうございます
うーん、まあこだわりとでも言いましょうか…
個人的にはそこまで知っておくことは無駄ではないと思います
983
(1): (ワッチョイ c1b6-egvc [2400:2200:6d6:9e9c:*]) 2023/12/03(日)13:08 ID:tV1DejKO0(1) AAS
>>975の質問なんかは明らかに自分のスキルや理解力に不相応なことを知ろうとしてない?
それを知ろうとするのはもっと力を付けてからがいいと思う
984
(2): (ワッチョイ 1901-+tyV [60.118.124.10]) 2023/12/03(日)14:24 ID:GsReymgf0(1) AAS
>>982
実装を知る以前に仕様は理解してる?
「仕様書のここをどうやって実装しているか、を知りたい」なら誰かしら答えるかもしれないが、そのようなレベルにも見えない
仕様を理解せずして、実装を理解するのは無理
985
(1): (オイコラミネオ MM95-j/4L [150.66.80.109]) 2023/12/03(日)17:15 ID:TpyXoIhbM(1) AAS
>>984
乗っかって補足すると、同じ仕様の実装なんて何通りもあるのよね。
そこであえて実装を知りたいというなら、その理由も書く方が間違いないよね。
986
(1): 982 (ワッチョイ 691d-zrcD [180.178.89.53]) 2023/12/04(月)23:09 ID:GWbm6wp00(1) AAS
レスありがとうございます
遅くなってすいません

>>983
そうですよね
まあ単純に、文字列である以上、変数用に確保したメモリ領域内に簡単には収まらない
だろうなと推測したんです
でも不変な値なら参照使わなくても収まるのかな
省7
987
(1): (ワッチョイ a95f-i/h+ [14.8.104.32]) 2023/12/04(月)23:27 ID:lRGkzbxI0(1) AAS
そのレベルを気にする人はもうフレームワーク作るレベルだろう
988
(1): (アウアウウー Sa9d-/D3x [106.146.123.7]) 2023/12/05(火)20:06 ID:gtr9NjJza(1) AAS
>>982
あ、ややこしい書き方してすまん
単にuint64_tが値の参照でオブジェクトの場合はポインタが入ってて
整数の場合はそのまま使ってると言うことを言いたかっただけ
typedef uint64_t JsValue;

JsValueが「値」を指す参照

JsValue obj = createObject(); // Object
省3
989: 982,986 (ワッチョイ 691d-zrcD [180.178.89.53]) 2023/12/05(火)23:32 ID:c1y4Tvg20(1) AAS
レスありがとうございます

>>987
そうなんですかね

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

画像リンク[jpg]:i.imgur.com
992
(1): (ワッチョイ 4501-zRS8 [60.106.64.223]) 2023/12/09(土)11:31 ID:In8GNdRi0(1) AAS
>>991
画像でコート見るのはしんどいので、>>2のサイト使って現象が再現するコードを掲示してほしい
993
(1): (ワッチョイ 2302-tASO [27.94.242.45]) 2023/12/09(土)14:27 ID:iYG1bkmj0(1) AAS
>>991
どうでもいいけど関数名の付け方にセンスないな
コメントもつける意味がないゴミ
変換ならconvertとかにすりゃいいのに…
994: (オッペケ Sre1-tek/ [126.254.170.203]) 2023/12/09(土)15:46 ID:W9usxQKOr(1) AAS
/や:が入ってるのを明示してるのはコメントとして意味があるだろう
995: (ワッチョイ 1b56-m+YX [2400:4176:2846:5b00:*]) 2023/12/09(土)16:39 ID:0uXDsiHr0(1) AAS
classのインスタンスで#プライベートメソッドにアクセスする方法ってないんでしょうか?
996: 986 (ワッチョイ b51d-g9yR [180.178.89.53]) 2023/12/09(土)17:13 ID:YETt4fHv0(1) AAS
>>990
はい
リンクありがとうございます
997: (オッペケ Sre1-tek/ [126.254.232.20]) 2023/12/09(土)17:46 ID:Mnb70srnr(1) AAS
なかったんで次スレ立てた
2chスレ:tech
998
(1): (ワッチョイ 5510-yLTa [222.230.65.145]) 2023/12/10(日)11:19 ID:ngtmyS7f0(1) AAS
>>992
サイトの使い方がいまいち分からず試してましたが、サイトでは症状が再現できず想定通りの挙動でした。これは作ってるアプリ側に原因があるのでしょうかね。
mementoというdbアプリだったのですが。

>>993
自覚はあります。プログラムに興味を持ち練習はじめなので勘弁してやってください。思いつかないんですorz
999: (ワッチョイ 35cb-tek/ [2400:2200:6f2:ada4:*]) 2023/12/10(日)11:47 ID:v6fUhk/70(1) AAS
>>998
>>991を実行してる環境について書いてくれないと
コードで見えてる部分以外については知りようがないんだから

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

続きが必要なら次スレにどうぞ
1000: (ワッチョイ 8f18-Xgad [2001:268:98e3:8067:*]) 2023/12/16(土)00:37 ID:xiFcB2tC0(1) AAS
テスト
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 495日 8時間 39分 45秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
省7
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s