2013-04-12 4 views
-3

У меня есть эта переменная:Можете ли вы выполнить тернарное выражение в интерполяции строки javascript?

var foobar = "Hi, my name is #{name}"; 

Но если имя не определено при загрузке страницы .. Я хотел бы, чтобы спасти «неизвестный» вместо этого.

Но писать что-то вроде этого:

var foobar = "Hi, my name is #{typeof name === 'undefined' ? 'unknown' : name}"; 

Тем не менее возвращает ошибку, unknown variable name

+5

, который является используемым языком шаблонов –

+0

Какой синтаксис является '' Привет, меня зовут # {name} "'? –

+1

@RocketHazmat Я думаю, что это рубиновая вещь. Это единственное место, где я видел этот специфический синтаксис. – Mathletics

ответ

3

Вместо того, чтобы логические решения в струнной конструкции, сделать это снаружи для лучшей производительности и (пока) более читаемый код:

name = name||'unknown';

0

Просто поместите имя там. Если он не определен или null, он будет «ложным».

var foobar = "Hi, my name is " + name ? name : 'unknown'; 
+0

Какой синтаксис вы используете здесь? –

+0

Не знаю. Я следил за синтаксисом, который использовал OP. Если его код может попытаться прочитать то, что находится внутри # {} (возврат этого имени не определено), то его проблема должна заключаться в том, чтобы заставить тройной внутри работать правильно, что и является вопросом вопроса. – krillgar

+1

Что делать, если его шаблон не поддерживает этот синтаксис и пытается прочитать выражение как имя переменной?^_^ –

2

Я думаю, что лучший метод был бы:

var name = name || "Unknown"; 
var foobar = 'Hi my name is ' + name; 
+0

И определенно чище читать ... – Stphane

+1

@ f00bar уверен, для однострочного. Но это промахивается, если вам нужно делать серьезные шаблоны на стороне клиента. – Mathletics

+0

Согласен с @Mathletics. Мне также нравится этот способ короткого замыкания необходимости тройной операции, сочетая независимость типа javascript. – krillgar

Смежные вопросы