Неявное преобразование типа данных в JavaScript при сравнении целого числа со строкой с использованием ==

Код:

var num = 20;

if(num == "20")
{
    alert("It works");
}
else
{
    alert("Not working");
}

Вопрос:

  1. В программировании на C у нас есть имя правила продвижение типа данных, при котором, когда есть сочетание типов данных (пример: добавление целого числа и числа с плавающей запятой), целое число сначала будет преобразовано в число с плавающей запятой, прежде чем будет выполнено добавление.

  2. Приведенный выше код вызовет у меня окно предупреждения с сообщением «Это работает» , которое показывает , если условие проверки истинно.

  3. Для слабо типизированного JavaScript мне просто любопытно: существует ли какое-либо правило, подобное C, которое определяет, какое преобразование будет выполнено в какой ситуации? Кроме того, приведенный выше код JavaScript преобразует значение переменной num из целочисленного значения в строковое значение перед выполнением сравнения или наоборот?

10
задан Yi Jiang 2 October 2011 в 08:07
поделиться