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 шт):

Автор решения: Igor
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 будет равно нулю.

→ Ссылка