(А == 1 && A == 2 && A == 3) есть, вероятно, будет истинное право?

 (А == 1 && A == 2 && A == 3) есть, вероятно, будет истинное право?

Когда == 1 && A == 2 && A == 3 верно?

Решение один: Объект преобразование типов

Есть а = {
    я : 1, ToString : функция () { возвращают а. я ++; }}

Когда два типа == сравнение не выполняются в то же самое время, он будет преобразован в тип другого типа, а затем сравнивается.

Например, по сравнению с типом Number Тип объекта, типы объектов будут преобразованы в тип номера.

Когда объект преобразуется в номер, он будет пытаться вызвать Object.valueOf () и Object.toString (), чтобы получить основные числа, соответствующие типу.

Решение два: массив типа преобразования

вар = [ 1, 2, 3]; а. присоединиться к = а. сдвиг; приставка. журнал (а == 1 && == 2 && == 3);

Этот тип преобразования, как указано выше, массив вызова ToString () неявно вызывает метод Array.join ()

Использование метода сдвига массива: сдвиг () метод используется для удаления первого элемента массива, из которого, и возвращает значение первого элемента. Если массив пуст, то метод сдвига () не будет делать ничего, возвращая неопределенное значение. Обратите внимание, что этот метод не создает новый массив, но непосредственно изменять исходный ArrayObject.

Таким образом , мы можем видеть , что  a==1можно было бы назвать , когда ToString (), ToString () вызывает объединение (), присоединиться () равно сдвигу, затем преобразуется в номер 1 - го типа.

Решение три: определение Получить

вар Val = 0;
Объект. defineProperty ( окно, ', { прибудет : функция () { возвращение ++ вал;}}); приставка. журнал (а == 1 && == 2 && == 3);

Используйте GET, так что три разных значений возвращаемого значения.

рекомендация

отwww.cnblogs.com/login123/p/12155616.html