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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
950
(1): 946 (ワッチョイ 4d1d-f5/H [180.178.89.53]) 2023/11/18(土)23:53 ID:rj8Lk8BJ0(1) AAS
…どこまで信じたらいいの?

>>947
ありがとうございます
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;
:
x = a + b * c;
}
省6
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使え
1-
あと 33 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s