как доказать, что логические типы данных преобразуются в числа при использовании оператора == в javaScript

как доказать, что логические типы данных, такие как «истина» и «ложь», преобразуются в числа при использовании оператора == в javaScript, кто знает, преобразуются ли «числа» в логические значения в javaScript при использовании оператора ==, см. ниже пример:

console.log(true == 1);
console.log(false == 1);

Как вы с большой уверенностью можете сказать, что в приведенном выше коде «логический тип данных» «истина» и «ложь» всегда преобразуется в числа при сравнении их с «числами» с использованием «оператора свободного равенства в javaScript (==)», кто знает преобразованы ли «числа» в логический тип данных «истина» и «ложь».

Пожалуйста, помогите мне разобраться в этом


person Kevin    schedule 10.03.2020    source источник
comment
Потому что так сказано в стандарте.   -  person Teemu    schedule 10.03.2020
comment
это всегда точно   -  person Kevin    schedule 10.03.2020
comment
Найдите Абстрактное сравнение равенства. (или, что еще лучше, никогда не используйте ==, используйте вместо этого ===)   -  person CertainPerformance    schedule 10.03.2020
comment
Двигатели почти всегда соответствуют спецификации. Для чего-то столь же фундаментального вы можете положиться на любой широко используемый двигатель. Если движок не соответствует спецификации, это обычно является причиной сообщения об ошибке и исправления разработчиками движка. Умышленное несоблюдение основного JS почти неслыханно.   -  person CertainPerformance    schedule 10.03.2020
comment
Если не прочитать исходный код JS-движка, вы не сможете доказать, что именно это и происходит. Это тоже не главное. Важным моментом (который вы можете - и сделали - доказать) является то, что результаты согласуются с тем, что говорится в спецификации.   -  person Amadan    schedule 10.03.2020
comment
ну, теперь я хочу знать между логическим типом данных и числом, почему люди всегда говорят, что логические значения приводятся к числам, кто знает, происходит ли обратное, я имею в виду, кто знает, приводятся ли числа к логическим значениям при сравнении с использованием (оператора свободного равенства)   -  person Kevin    schedule 10.03.2020
comment
если логическое значение не было преобразовано в число, 'true' == true вернет true, так же как "1" == 1 вернет true. но поскольку разные типы преобразованы в числа, 1=="1" потому что 1==1, но true != "true" потому что true преобразованы в 1   -  person Yosef Tukachinsky    schedule 10.03.2020
comment
Вы вообще читали здесь комментарии?   -  person Teemu    schedule 10.03.2020
comment
да, я сделал, и мне нужно больше примеров кода, чтобы доказать, что логические значения преобразуются в числа в javaScript, чтобы мне было легче его получить   -  person Kevin    schedule 10.03.2020
comment
Ни один пример кода не может этого доказать. JS-движки создаются в соответствии со спецификациями, пожалуйста, прочтите страницу спецификаций, на которую ссылается CertainPerformance, там ваши доказательства (пункты 8 и 9 в списке).   -  person Teemu    schedule 10.03.2020
comment
хорошо, тогда я поймал еще одно странное поведение в javaScript, глядя на пример @YosefTukachinsky, я хочу знать между строкой и логическим типом данных, какой из них преобразован в какой (true == 'true'), чтобы, как вы видите, я сравниваю строку с логическим true теперь я хочу знать, во что преобразован логический тип. это число?   -  person Kevin    schedule 10.03.2020
comment
логическое значение преобразовано в число. затем он сравнивает строку с числом. строка пытается преобразовать в число и получает NaN. так что его возврат false   -  person Yosef Tukachinsky    schedule 10.03.2020
comment
если вы попробуете true == '1', вы получите true. потому что оба конвертируются в число, и вы получаете 1==1, что верно   -  person Yosef Tukachinsky    schedule 10.03.2020
comment
поэтому строка преобразуется в NaN при попытке преобразовать себя в число   -  person Kevin    schedule 10.03.2020
comment
если его нельзя преобразовать - да. если его можно преобразовать - преобразовать в число   -  person Yosef Tukachinsky    schedule 10.03.2020
comment
если оба типа не могут быть преобразованы в число (т.е. abc == {a: 1}), они оба преобразуются в NaN и NaN != NaN (вы можете проверить)   -  person Yosef Tukachinsky    schedule 10.03.2020