Более длинный ответ заключается в том, что JavaScript применяет некоторые правила, когда видит код, подобный следующему.
В этом случае document.write(s,m)
просто выводит каждое значение:
var s= new Date().getHours(); // 20
var m= new Date().getMinutes(); // 38
document.write(s,m); // returns 2038
Следующее объявляетдве переменные (разделенные запятой), одна с именем time
и одна с именем m
, а значение, содержащееся в переменной s
, присваивается time
.С помощью правил определения содержания JavaScript вы можете объявить, например, var m
так часто, как вам нравится в функции, и она всегда будет ссылаться на одну и ту же переменную m
:
var time = s,m;
document.write(time); // returns only 20
JavaScript использует +
для обоих добавленийи конкатенация, и попытается привести переменные в соответствие с типом первой переменной, чтобы решить, будет ли она выполнять сложение или конкатенацию.В этом случае s
- это число, поэтому он попытается выполнить сложение для двух значений:
var time = s+m;
document.write(time); // returns 58
Правильная идиома JavaScript для этого - поместить пустую строку в начало выражения, а JavaScriptпопытается привести последующие переменные к этому типу:
var time = '' + s + m;
document.write(time); // returns 2038