Строковые операторы присваивания JavaScript

Python: функциональная, рекурсивная однострочная с использованием логической оценки короткого замыкания.

    factorial = lambda n: ((n <= 1) and 1) or factorial(n-1) * n
10
задан Josh Stodola 17 November 2009 в 19:36
поделиться

6 ответов

Короткий ответ - он не предназначен для работы со строками.

Более длинный ответ: если вы попробуете оператор вычитания для двух строк, он сначала преобразует их в числа, а затем выполните арифметические операции.

"10" - "2" = 8

Если вы попробуете что-то нечисловое, вы получите ошибку, связанную с NaN:

"AA" - "A" = NaN
13
ответ дан 3 December 2019 в 17:20
поделиться

Потому что оператор + объединяет строки, а оператор - только вычитает числа друг из друга.

Что касается причины - вероятно, потому что трудно определить, что люди хотят делать, когда они вычитают строки друг из друга.

Например:

"My string is a very string-y string" - "string"

Что это должно делать?

6
ответ дан 3 December 2019 в 17:20
поделиться

Как уже говорилось, оператор - = не перегружен для работы со строками, он работает только с числами.

Если вы попытаетесь использовать его со строками, оператор попытается преобразовать оба операнда в Число , поэтому вы получаете NaN , потому что:

isNaN(+"foo"); // true

Чтобы избавиться от содержимого arr в строке test , вы можете заменить это:

var test = "Test",
    arr = "&#8660;"

test += arr;
alert(test);  // Shows "Test&#8660;"

test = test.replace(arr, ""); // replace the content of 'arr' with "" on 'test'
alert(test);  // Shows "Test"
3
ответ дан 3 December 2019 в 17:20
поделиться

Это потому, что знак минус не является допустимым оператором String, тогда как знак плюс перегружен для обработки как чисел (оператор сложения), так и строк (оператор конкатенации).

Какие результаты вы получили надеетесь получить от этого?

1
ответ дан 3 December 2019 в 17:20
поделиться

Обычно языки программирования не определяют вычитание для строк. + = на самом деле не сложение, это конкатенация.

0
ответ дан 3 December 2019 в 17:20
поделиться

Потому что + (знак плюс) также является оператором конкатенации строк, а знак - (минус) применяется только к вычитанию. Если JavaScript может складывать 2 строки вместе, он не будет жаловаться, но если вы попытаетесь вычесть 2 строки, это не имеет никакого смысла.

0
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: