Не срабатывает функция в JavaScript

Мне нужно чтобы функция добавляла к числу знак "+", если оно положительное, но она не добавляет ((

function plus(num) {
    if (num > 0)
        num = '+' + num;
}

plus(a);


console.log(a);

Ответы (2 шт):

Автор решения: Solt

Ну вот как-то так.

function plus(num){
    if(num > 0){
        num = '+' + num;
    }
    return num;
}

let a = plus(10);

console.log(a);

→ Ссылка
Автор решения: Stanislav Volodarskiy

Не нужно ради внешнего вида менять само значение. Во-первых, это не будет работать, так как значения нельзя изменить внутри функции так, чтобы это стало видно снаружи. Во-вторых, это плохая идея потому что вы универсальное числовое значение превращаете в строку иногда. JavaScript сделает это для вас и некоторое время это будет работать. Но в более сложной ситуации проявится, что у вас строка вместо числа, и что-нибудь сломается.

Для форматирования числа сделайте функцию, которая по числу возвращает строку и назовите её соответственно:

const formatWithSign = n => (n > 0) ? `+${n}` : n.toString();

for (let i = -3; i <= 3; ++i) {
    console.log(i, formatWithSign(i));
}

  • (...) ? ... : ... – тернарный (условный оператор). В зависимости от условия вычисляется выражение до двоеточия или после него;
  • `+${n}` – форматная строка, которая выводит плюс и число за ним;
  • n.toString() переводит число в строку как есть. Преобразование добавлено чтобы функция во всех ситуациях возвращала значения одного типа – строку;
  • => – по возможности старайтесь использовать стрелочные функции. Это более современный синтаксис, который избегает некоторых проблем, связанных с традиционным объявлением function.
→ Ссылка