Как js уничтожает значения по умолчанию для функции? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть этот код:

function houseDescriptor([houseColor = 'green', shutterColors = ['red']] = []) {
    console.log(houseColor, shutterColors);
}

houseDescriptor('nbh');

Почему консоль печатает: n b

Как работает?

Почему, если я передаю строку, у меня нет ошибок, но если я использую houseDescriptor (123), я получаю ошибку?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018
function houseDescriptor([houseColor = 'green', shutterColors = ['red']] = []) 

Приведенная выше функция принимает один аргумент типа array. Поэтому, когда вы передаете 'nbh' в качестве аргумента, он будет считаться итеративным и выполнять деструктуризацию.

приведенный выше код эквивалентен

let [firstCharacter, secondCharacter] = 'Stack'; 
console.log(`firstCharacter: ${firstCharacter} , secondCharacter: ${secondCharacter}`)
0 голосов
/ 02 ноября 2018

Строки считаются итеративными, а числа - нет. Он выполняет деструктуризацию на основе индекса для вашей строки, поэтому печатает только n и b.

Посмотрите на перечисленные итерации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...