объединяя две переменные в JavaScript - PullRequest
2 голосов
/ 24 января 2012
var s= new Date().getHours();       // 20
var m= new Date().getMinutes();     // 38
document.write(s,m);                // returns 2038

var time = s,m;
document.write(time);               // returns only 20

var time = s+m;
document.write(time);               // returns 58

Как я могу объявить переменную времени, которая возвращает 2038, используя переменные s и m?

Ответы [ 3 ]

1 голос
/ 24 января 2012

Вы должны убедиться, что js сначала знает строку.

var time = "" + s + m;
1 голос
/ 24 января 2012

Приведите один к строке.

var time = ''+s+m;
document.write(time);
0 голосов
/ 24 января 2012

Более длинный ответ заключается в том, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...