Как сказал выше Джонатан, вы возвращаете пустую строку из функции, поэтому, даже если вы изменяете глобальную переменную, добавляя '<li>'
к out
внутри doWhat
, javascript добавит возвращаемое значение из функции к значению out
при вызове функции.
Вы также можете просто сделать:
var out = '';
function doWhat(){
out += '<li>';
return true;
}
doWhat();
Есть ли какая-то особая причина, по которой вам нужно добавлять что-либо в строку как внутри функции, так и после того, как возвращается ее значение?
[править]
Глядя на фактический пример, который вы разместили в комментариях к этому ответу, мне кажется, что вы, возможно, пытаетесь условно вернуть дополнительное значение, добавляемое к out
из doWhat
. Поправьте меня если я ошибаюсь. Ваш код выглядит так:
var out = '', temp;
function doWhat(){
out += '<li>';
}
out += typeof (temp = doWhat()) === 'undefined' ? '' : temp;
Из этой презентации значение temp всегда будет неопределенным, потому что функция не возвращает ничего, что можно было бы ввести. Если вы планируете, чтобы функция иногда возвращала значение, которое вы затем добавляете, вы можете достичь того, что ищете, разбив его на две строки в конце:
var out = '', temp;
function doWhat(){
out += '<li>';
}
temp = doWhat();
out += typeof (temp === undefined) ? '' : temp;
Это немного неловко, и я, вероятно, попытался бы переместить оба добавления в функцию.
var out = '';
function doWhat () {
out += '<li>';
if (some condition is met) { out += 'some extra string'; }
}
doWhat();