一緒にJavaScriptの勉強せんか?

1 : 2024/12/21(土) 05:09:15.347 ID:3JP/BXQhn
久々に調べたら色々便利な機能追加されててビビるわ
staticフィールドとか3年前くらいからやっと使えるようになったんかい
2 : 2024/12/21(土) 05:12:42.265 ID:3JP/BXQhn
staticフィールドとstatic initializer
こんな感じでstaticフィールドを初期化できる

class A {
static a;
static b;
static {
a = 123141;
b = a + 1;
}
}

3 : 2024/12/21(土) 05:13:45.334 ID:3JP/BXQhn
ここにメモしていく
4 : 2024/12/21(土) 05:15:04.473 ID:3JP/BXQhn
スプレッド構文

配列を引数に展開するやつ
Pythonの*listと同じ

const a = [1, 2, 3]
console.log(…a)

5 : 2024/12/21(土) 05:15:44.815 ID:LiBT83GY/
TypeScriptも覚えろ
8 : 2024/12/21(土) 05:17:17.112 ID:3JP/BXQhn
>>5
何かメリットあるん?バニラでももう十分便利じゃないの?
25 : 2024/12/21(土) 05:41:07.787 ID:WlcPf561H
>>8
やっぱりいろいろ便利やで
そりゃJavaScriptにトランスパイルされるんだから機能的には大差ないけどコーディングがクソ楽
6 : 2024/12/21(土) 05:16:25.905 ID:3JP/BXQhn
配列を初期化するときに別の配列を展開することもできて非常に便利

const a = [1, 2, 3]
const b = [0, …a, 4]

7 : 2024/12/21(土) 05:16:56.039 ID:bZwxA6zDt
嫌や
なんでキンタマ野郎と一緒にやらなアカンねん
9 : 2024/12/21(土) 05:20:03.536 ID:YUjqJfJE7
staticってどの言語にもあるし勉強するものなのか?
11 : 2024/12/21(土) 05:21:54.190 ID:3JP/BXQhn
>>9
使える/使えないは覚えとかないとね
これまでずっと使えなかったから効率良いコーディングに取り残されてしまう
static initializerみたいなのは他言語にある?
18 : 2024/12/21(土) 05:28:42.518 ID:YUjqJfJE7
>>11
c#の静的コンストラクターみたいなもんじゃないにょ?
21 : 2024/12/21(土) 05:32:12.402 ID:3JP/BXQhn
>>18
C#はjsより触ってないから実はよくわからないんや
そんなのもあったような気もする
10 : 2024/12/21(土) 05:20:26.006 ID:3JP/BXQhn
分割代入
これもPythonでよくやるやつやね

const [a, b] = [1, 2]

末尾限定だけどスプレッド構文と似た書き方もできる
この場合eが配列になる

const [c, d, …e] = [10, 20, 30, 40, 50, 60]

12 : 2024/12/21(土) 05:21:55.326 ID:p19Q24yx2
基本的なのはchatGPTに聞けばええ
これからは構想力やで
13 : 2024/12/21(土) 05:25:08.987 ID:3JP/BXQhn
冪乗
Pythonと同じや

3**2 // = 9

-3**2みたいな書き方するとエラーが出る
符号どっちか紛らわしいからか?
関係ないけどExcelで=-3^2って書いたら正の9になるの気持ち悪すぎる

15 : 2024/12/21(土) 05:26:30.080 ID:wW.sI1a.n
>>13
そらマイナス3の二乗やから当然では
19 : 2024/12/21(土) 05:31:27.320 ID:3JP/BXQhn
>>15
普通に読んだら-(3^2)やろ
mathematicaさんもそう言っとるで
https://www.wolframalpha.com/input/?i=-3%5E2

レス19番のリンク先のサムネイル画像
32 : 2024/12/21(土) 05:58:59.478 ID:2pEdKtiSK
>>15
マイナス3の二乗は(-3)²やな
14 : 2024/12/21(土) 05:25:31.301 ID:wW.sI1a.n
pythonのパクリやんけ
16 : 2024/12/21(土) 05:28:05.906 ID:3JP/BXQhn
null合体演算子
三項演算子の特殊なやつが単独で切り出された機能
C#とかにあるやつやね

a ?? 100 // a !== null ? a : 100 と同じ

昔はa || 100とかしてたような?可読性悪すぎやったね

31 : 2024/12/21(土) 05:54:43.586 ID:3JP/BXQhn
>>16
これはundefinedでも100になるらしい
17 : 2024/12/21(土) 05:28:18.880 ID:0wsI1p5uz
スタティックって何ンゴ?
20 : 2024/12/21(土) 05:31:43.605 ID:YUjqJfJE7
>>17
花見の席取り
22 : 2024/12/21(土) 05:32:56.651 ID:3JP/BXQhn
>>17
そのクラスのインスタンス全部が共有する変数とか関数のことや
23 : 2024/12/21(土) 05:36:14.398 ID:3JP/BXQhn
デフォルト引数
見たまんま

function aiueo(a, b=100) {
console.log(a, b)
}

aiueo(1, 2) // 1 2 が出力される
aiueo(1) // 1 100 が出力される

24 : 2024/12/21(土) 05:39:54.318 ID:3JP/BXQhn
パブリック・プライベートフィールド

class A {
a = 5;
#b = 5;
}

コンストラクターでthis.a = …とか書かなくても直に書けるようになった
#から始まる名前の変数は勝手にprivateになって外部から参照できない
プライベート関数も同じ

26 : 2024/12/21(土) 05:44:19.291 ID:3JP/BXQhn
at()
文字列とか配列の値を取るときにPythonみたいに-1とか使える

[1, 2, 3][0] // 1
[1, 2, 3][-1] // Error
[1, 2, 3].at(0) // 1
[1, 2, 3].at(-1) // 3

ちなみにES2022でこの関数が追加されたおかげで、jsfuckっていうjsのあらゆるコードを5文字だったか6文字だったかで表現するっていうチャレンジが簡単になったらしい

27 : 2024/12/21(土) 05:45:32.711 ID:3JP/BXQhn
>>26
ごめんこれエラーにならんわ
undefinedが返ってくる
28 : 2024/12/21(土) 05:49:27.570 ID:YUjqJfJE7
>>26
戻り値はstring?
30 : 2024/12/21(土) 05:51:47.544 ID:3JP/BXQhn
>>28
配列のatなら中身と同じ型
文字列のatなら文字列かな
29 : 2024/12/21(土) 05:50:08.511 ID:3JP/BXQhn
replaceAll()
文字列の置き換え
2020年くらいまでなかったらしい

‘tomato’.replaceAll(‘to’, ‘aaa’)

33 : 2024/12/21(土) 06:00:00.231 ID:3JP/BXQhn
Optional Chaining
連想配列にキーがあるかないかわからないときに使う
if文での判定をわざわざ書かなくて良くて便利
入れ子で何回でも使える

const x = {
a: {
u: ‘aaa’
}
}

const y = {
b: ‘aaa’
}

x.a?.u // ‘aaa’
y.a?.u // undefined

34 : 2024/12/21(土) 06:00:55.725 ID:fPQ4RhhM.
TypeScript書け
型を明示しない世界を作るな

コメント

タイトルとURLをコピーしました