javascript: Uncaught SyntaxError: Unexpected token ';' (или '==')
В коде
<script type="text/javascript">
var dNumber = {$smarty.session.s_dNumber};
</script>
выскакивает ошибка: Uncaught SyntaxError: Unexpected token ';'
Очевидно, из-за того, что переменная в сессии пустая либо отсутствует (?).
Пытаюсь эту ситуацию обойти:
var dNumber = {$smarty.session.s_dNumber} == '' ? :{$smarty.session.s_dNumber};
Ошибка слегка меняется: Uncaught SyntaxError: Unexpected token '=='
Код - часть проекта, проверять который на адекватность нереально. Как справиться с этой ситуацией в пределах моего участка кода?
P.S. код - вставка JS в *.tpl файле для PHP-обработки
Ответы (1 шт):
var dNumber = '{$smarty.session.s_dNumber}';
Код преобразования шаблона (template-а) срабатывает независимо от того, поставили мы кавычки или нет, и выводит значение s_dNumber в соответствующее место получившегося текста. Если значение s_dNumber - пустая строка, или его нет, то получается синтаксически неверный JS:
var dNumber = ;
Соответственно, при наличии кавычек:
var dNumber = '';
Если s_dNumber - число, и Вы хотите, чтобы JS-переменная dNumber тоже была числом, то можно написать
var dNumber = Number('{$smarty.session.s_dNumber}');
или даже без кавычек
var dNumber = Number({$smarty.session.s_dNumber});
Тогда для пустого s_dNumber dNumber будет равно нулю.