Порядок свойств объекта и равенство JSON.stringify

Основываясь на определении объекта, которое не гарантирует порядок свойств, есть ли шансы, что следующее вернет false?

JSON.stringify({a: "A", b: "B"}) == JSON.stringify({a: "A", b: "B"})

ОБНОВЛЕНИЕ: конечно, я попробовал это в консоли, и я всегда получаю true, но это противоречит тому факту, что порядок свойств не гарантируется. Я не уверен, что понимаю, в какой момент порядок свойств не совпадает с порядком во время объявления.

Также следующее доказало, что порядок атрибута сохраняется:

example = {}
example.a = "A"
example.c = "C"
example.b = "B"

JSON.stringify(example) == JSON.stringify({a: "A", c: "C", b: "B"})

person Francesco Meli    schedule 23.08.2018    source источник


Ответы (1)


JSON.stringify() возвращает строку, поэтому при изменении порядка атрибутов возвращаемая строка изменяется.

просто попробуйте.

console.log(JSON.stringify({a: "A", b: "B"}) == JSON.stringify({a: "A", b: "B"}));
console.log(JSON.stringify({a: "A", b: "B"}) == JSON.stringify({b: "B", a: "A"}));

person JSmith    schedule 23.08.2018
comment
Я считаю, что ОП не спрашивает, верно ли это в одном случае, но можно ли гарантировать, что это верно во всех случаях. - person ggorlen; 24.08.2018
comment
добавлено редактирование, как вы думаете, это отвечает на вопрос? - person JSmith; 24.08.2018