Js помогите пожалуйста
Есть два выражения
let a = [ numA = 1 , numB = 2 ]
let b = { numC : 1 , numD : 2}
Принципиальная разница в чем ? Я понимаю что один массив другой обьект, мне не понятно почему я могу так сделать
console.log( numA );
а должен
console.log( a.numA );
так меня компилятор вообще далеко посылает я чет сильно туплю (отредактировано)
Ответы (1 шт):
Все достаточно просто, js объектно-ориентированный язык. let a = [ numA = 1 , numB = 2 ] - данное выражение не создает ассоциативный массив как let b = { numC : 1 , numD : 2}. Функция присвоения numA = 1 создает локальную переменную numA и присваивает ей число, но так же она возвращает само это число как return, то есть (numA=1) == 1) is true. То есть первое выражение делает let a = [1, 2] но также оно создает и локальные переменные var numA=1; var numB=2. К массиву, если что, можно обратиться по индексу a[0] выдаст 1. Получается что простыми словами мы создали обычный массив и возле него еще и переменные, и это было бы как выражение:
//это выражение
let a = [ numA = 1 , numB = 2 ]
//равняется этому выражению
let numA=1
let numB=2
let a = [numA, numB]