Непонятное поведение javascript
Вопрос к знатокам.
Не могу понять, что крамольного обнаруживает javascript в определении следующей функции:
date_to_string = function (value) {
return
'0'.concat(value.getDate()).slice(-2).
concat('.').
concat('0'.concat(value.getDay() + 1).slice(-2)).
concat('.').
concat(value.getFullYear()).
concat(' ').
concat('0'.concat(value.getHours()).slice(-2)).
concat(':').
concat('0'.concat(value.getMinutes()).slice(-2)).
concat(':').
concat('0'.concat(value.getSeconds()).slice(-2))
}
alert(date_to_string(new Date()))
Обращаясь к ней получаем результат – "undefined" И абсолютно та же функция, но с использованием промежуточной переменной:
date_to_string = function (value) {
var str =
'0'.concat(value.getDate()).slice(-2).
concat('.').
concat('0'.concat(value.getDay() + 1).slice(-2)).
concat('.').
concat(value.getFullYear()).
concat(' ').
concat('0'.concat(value.getHours()).slice(-2)).
concat(':').
concat('0'.concat(value.getMinutes()).slice(-2)).
concat(':').
concat('0'.concat(value.getSeconds()).slice(-2))
return str
}
alert(date_to_string(new Date()))
Результат обращения к ней – скажем "04.05.2008 17:31:00". Тоесть то, что и ожидалось от её работы. Хотелось бы знать – что не нравиться javascript в первом варианте?! |
всё прhавильно (представь, что ты парсер):
return ; '0'.concat(value.getDate()).slice(-2). concat('.'). concat('0'.concat(value.getDay() + 1).slice(-2)). concat('.'). concat(value.getFullYear()). concat(' '). concat('0'.concat(value.getHours()).slice(-2)). concat(':'). concat('0'.concat(value.getMinutes()).slice(-2)). concat(':'). concat('0'.concat(value.getSeconds()).slice(-2)); Нельзя после return перенос на другую строку ставить... |
Да.....
Нужно срочно поменять название темы с "непонятное поведение javascript" на "жесткое поведение javascript"... Странно как это парсер "упустил" возможность в строке var str = присвоить значение "undefined" этой переменной... Боюсь даже думать чего ещё можно от него ожидать :rolleyes: |
потому что он так поступает только с return.
|
Ну вообщем тему можно закрывать. Всё понятно. Спасибо.
Так работает:
date_to_string = function (value) {
return '0'.concat(value.getDate()).slice(-2).
concat('.').
concat('0'.concat(value.getDay() + 1).slice(-2)).
concat('.').
concat(value.getFullYear()).
concat(' ').
concat('0'.concat(value.getHours()).slice(-2)).
concat(':').
concat('0'.concat(value.getMinutes()).slice(-2)).
concat(':').
concat('0'.concat(value.getSeconds()).slice(-2))
}
Конец рабочего дня дает о себе знать... ;) |
| Часовой пояс GMT +3, время: 06:36. |