[過去ログ] + JavaScript の質問用スレッド vol.124 + (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
459
(3): (JP 0Ha1-zD41 [126.249.157.89]) 2022/02/11(金)20:34 ID:efWVJIaOH(1) AAS
質問させてください

let ar={a:{a1:1}};
console.log(a1); // ? a1 is not defined

let {a:{a1}}=ar;
console.log(a1); // ? 1

a1を出力したのですが、
?は未定義
?は1が出力されています

どうして?と?の出力結果が異なるのでしょうか?
460
(1): (ササクッテロラ Spa1-6JR8 [126.193.40.232]) 2022/02/11(金)20:42 ID:XbmfRAz/p(1) AAS
>>459
オブジェクトの分割代入されるから。
461: (ワッチョイ 77f0-B80Q [124.45.127.106]) 2022/02/12(土)11:33 ID:RPVXSf4c0(1) AAS
>>459
?のa1はグローバルレキシカルを参照したけど定義されていなかった
?のa1はグローバルレキシカルを参照したらオブジェクトとして登録されていたのでvalueを返した

?は{a:
462
(1): (ブーイモ MM42-/t+S [49.239.64.187]) 2022/02/12(土)11:55 ID:GfpJrBC6M(1) AAS
>>459
>>460が書いてるように3行目は分割代入なんだけど
特にオブジェクトデストラクチャリングと呼ばれる機能
外部リンク:developer.mozilla.org

3行目でaとa1という変数が定義される
それ以前はa1という変数が定義されてないからundefined

とりあえずstrictモードを使いましょう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s