Непонятное поведение 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, время: 17:30. |