Quand j'ai vu le tutoriel ES6 de Ruan Yifeng sur l'affectation de déstructuration et les valeurs par défaut, je n'ai pas bien compris cette partie.
Lien original
Notez que ES6 utilise l'opérateur d'égalité stricte (===) en interne pour déterminer si une position a une valeur. Par conséquent, Si un membre du tableau n'est pas strictement égal à indéfini, la valeur par défaut ne prendra pas effet.
function f() {
console.log('aaa');
}
let [x = f()] = [1];
Le livre dit que le code ci-dessus est équivalent au code suivant
let x;
if ([1][0] === undefined) {
x = f();
} else {
x = [1][0];
}
Excusez-moi, d'où ça vient [1][0]
? Cela ne devrait-il pas être comme ça ?
let x;
if (1 === undefined) {
x = f();
} else {
x = 1;
}
Lors de la déconstruction d'un tableau, le principe est le suivant : mettre une ou plusieurs variables dans le tableau A, puis rendre ce tableau A égal à un autre tableau B. Puis lors de la déstructuration, la valeur d'une certaine position dans le tableau A sera égale à la position correspondante du tableau B. valeur.
La signification de ce code est de créer d'abord un tableau A. Le premier élément du tableau A est x, puis il y a un tableau B, B = [1].
Ensuite, laissez A = B. L'effet final est A[ 0] = B[0], qui est
x=B[0]
,也即x=[1][0]
.Donc, pour juger s'il est égal à indéfini, faites ceci
Le 1 dans [1] à droite de
correspond à x, c'est-à-dire que
[1][0]
correspond à xDéconstruire, déconstruire, déconstruire. . . Le but est donc de dénouer les choses du côté droit du signe égal, il faut donc dénouer
[1]
.Alors
let [x]=[1]
,那么x
就是[1][0]
,也就是1
。所以其实x
的赋值是根据[1][0]
vient juger.Je ne sais pas si je comprends ce que je dis, mais je ferais mieux de vous donner la documentation :
https://developer.mozilla.org...