#javascript #object #comparison
Вопрос:
let obj = {
one : 1 ,
two : 1 ,
three : 1 ,
}
function recursiveCheckEqual(x , ...rest){
return Object.is(x , rest[0]) amp;amp; (rest.length < 2 || recursiveCheckEqual(...rest));
}
recursiveCheckEqual(1 , obj). // why return single "false"
это было сравнение стоимости объекта более чем с двумя значениями . Однако я не могу разобраться в этом , как это на самом деле работает ?
1 . как он достигает рекурсивности ?
2 . возвращает ли «return» весь аргумент ( объект—to — — — rest ) ;
Комментарии:
1. » как это достигается рекурсивно ? «потому что он рекурсивно вызывает себя с
recursiveCheckEqual(...rest)
2. @VLAZ , но почему вычисленный результат является ложным? recursiveCheckEqual(1 , obj) => одна строка false
3. Потому
1
что это не равноobj
. С двумя аргументами всеrecursiveCheckEqual(1 , obj)
, что нужно сделать, это выполнитьObject.is(1, obj)
, и он даже не будет рекурсивно вызывать себя. Число не равно объекту, поэтому оно возвращаетсяfalse
.