строка и номера логический
Тип JavaScript будет преобразован в соответствующий тип в соответствии с назначением.
var str = ""; alert (typeof (str)); // stringStr =; alert (typeof (str)); // numbervar sum = str +; //+программировать два числа, чтобы добавить оповещение (sum); //
Это более очевидно, и значение можно рассчитать с первого взгляда. Но, пожалуйста, посмотрите следующее преобразование
var sum = "" + ""; alert (typeof (sum)); // stringAlert (sum); // var sum = "" +; alert (typeof (sum)); // stringAlert (sum); // var sum = + ""; alert (typeof (sum)); // stringAlert (typeof (sum)); // var div = ""/""; alert (typeof (area)); // numberAlert (typeof (sub)); // var sub = "" - ""; alert (typeof (sub)); // numberAlert (sub); // var div = ""/""; alert (typeof (area)); // numberAlert (typeof (div)); // numberAlert (div); //.
Если тип номера и тип строки "+", номер будет преобразован непосредственно в строку
Вышеупомянутое "+" очень особенное. Если это -, *, /; Тогда в какой тип он будет преобразован в конце?
var aea = "" * "a"; alert (typeof (area)); // numberAlert (aea); // nanvar sub = "a" - ""; alert (typeof (sub)); // nansub = "a" -; alert (typeof (sub)); // nansub = "a" -; alert (sub)); (div)); // nandiv = "a"/; alert (typeof (div)); // nan
Как указано выше -, *, / являются арифметикой по количеству. Строка и число не могут выполнять расчеты, поэтому их значения являются NAN. Тип номер.
var a = true; alert (typeof (a)); // booleanvar b = "true"; var ab = a + b; alert (typeof (ab)); // stringalert (ab); // truetRueAlert (a == b); // ложный
Логические и строковые, логические типы автоматически преобразуются в строку «true», но почему не равен B
Давайте посмотрим на этот пример:
var c = ""; alert (typeof (c)); // stringvar d =; alert (typeof (d)); // numberAlert (c == d); // true
Принцип конверсии приведен здесь: (для справки)
1. Если операнд является логическим, преобразуйте его в числовое значение, прежде чем сравнивать равенство - false до 0 и верно в 1;
2. Если один операнд является строкой, а другой оператор - это числовое значение, то строка преобразуется в числовое значение перед сравнением равенства;
3. Если один операнд является объектом, а другой операнд - нет, то метод значения () объекта вызывается, и полученное значение базового типа сравнивается в соответствии с предыдущими правилами.
Затем при сравнении строк и логических типов, это будет:
Это преобразование происходит: Boolean True сначала преобразуется в номер 1, затем преобразуется в строку «1», а затем сравнивает. Результат должен быть ложным.
NULL и строковый номер логический.
var a = null; alert (typeof (a)); // objectvar b = "hello"; var ab = a + b; alert (typeof (ab)); // stringAlert (ab); // nullhellovar c =; var ac = a * c; alert (typeof (ac)); // numberAlert (ac); // if (a) // false {} else {alert ("false");} var u; alert (a == u); //истинныйИз приведенного примера мы видим:
NULL автоматически преобразуется в строку «null» в строке, представляющая число 0 по номеру, что эквивалентно False по логическому суждению и совпадает с неопределенным, когда выражается значение. Обратите внимание, что == вместо ===.
Хотя == преобразует свой тип сравнения при сравнении, его тип переменной не меняется из -за ==.