Rumah > Soal Jawab > teks badan
Apabila saya melihat tutorial ES6 Ruan Yifeng tentang memusnahkan tugasan dan nilai lalai, saya tidak begitu memahami bahagian ini.
Pautan asal
Perhatikan bahawa ES6 menggunakan pengendali kesaksamaan yang ketat (===) secara dalaman untuk menentukan sama ada kedudukan mempunyai nilai. Oleh itu, Jika ahli tatasusunan tidak sama dengan yang tidak ditentukan, nilai lalai tidak akan berkuat kuasa.
function f() {
console.log('aaa');
}
let [x = f()] = [1];
Buku mengatakan bahawa kod di atas adalah bersamaan dengan kod berikut
let x;
if ([1][0] === undefined) {
x = f();
} else {
x = [1][0];
}
Maaf, dari mana asalnya [1][0]
ini? Bukankah sepatutnya begini?
let x;
if (1 === undefined) {
x = f();
} else {
x = 1;
}
学习ing2017-06-07 09:26:42
Apabila menyahbina tatasusunan, prinsipnya adalah seperti berikut: masukkan satu atau lebih pembolehubah ke dalam tatasusunan A, dan kemudian jadikan tatasusunan ini A sama dengan tatasusunan B yang lain. Kemudian semasa penstrukturan, nilai kedudukan tertentu dalam tatasusunan A akan sama dengan kedudukan tatasusunan yang sepadan B. nilai.
let [x = f()] = [1];
Maksud kod ini adalah untuk mula-mula mencipta tatasusunan A. Item pertama dalam tatasusunan A ialah x, dan kemudian ada tatasusunan B, B = [1].
Kemudian biarkan A = B. Kesan akhir ialah A[ 0] = B[0], iaitu x=B[0]
,也即x=[1][0]
.
Jadi apabila menilai sama ada ia sama dengan undefined, lakukan ini
if([1][0] === undefined)
PHP中文网2017-06-07 09:26:42
1 dalam [1] di sebelah kanan
sepadan dengan x, iaitu, [1][0]
sepadan dengan x
欧阳克2017-06-07 09:26:42
Dekonstruk, dekonstruk, dekonstruk. . . Jadi tujuannya adalah untuk membuka ikatan di sebelah kanan tanda sama, jadi kita mesti membuka ikatan [1]
.
Jadilet [x]=[1]
,那么x
就是[1][0]
,也就是1
。所以其实x
的赋值是根据[1][0]
datang untuk menilai.
Saya tidak tahu sama ada saya faham apa yang saya katakan, tetapi lebih baik saya berikan anda dokumentasi:
https://developer.mozilla.org...