cari

Rumah  >  Soal Jawab  >  teks badan

javascript - tugasan lalai penyusunan tatasusunan ES6

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;
}
滿天的星座滿天的星座2774 hari yang lalu1111

membalas semua(3)saya akan balas

  • 学习ing

    学习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)

    balas
    0
  • PHP中文网

    PHP中文网2017-06-07 09:26:42

    1 dalam [1] di sebelah kanan

    sepadan dengan x, iaitu, [1][0] sepadan dengan x

    balas
    0
  • 欧阳克

    欧阳克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...

    balas
    0
  • Batalbalas