Эй, ребята,
Чтобы дать вам представление о том, что обсуждается в этой статье, мы немного обсудим JavaScript конкатенацию и Оператор унарный плюс.
Я наткнулся на этот вопрос в твиттере, что побудило меня написать эту статью. Начну с вопроса.
Является ли JavaScript простым, объясните ниже.
let outPut = (‘b’ + ‘a’ + + ‘a’ + ‘a’).toLowerCase(); console.log(outPut); //"banana"
Как это может быть…
Мне пришлось прочитать несколько статей, чтобы понять это. Хотя объяснение действительно простое. Я думал о том, чтобы поделиться своим опытом и знаниями, пытаясь найти ответ. Я бы сказал, что я не эксперт, и здесь может не хватать нескольких пунктов (дайте мне знать, если вы найдете что-то еще. Кстати, это моя первая статья).
Хорошо. приступим.
На первый взгляд мы знаем, что это конкатенация строк, а затем вывод переводится в нижний регистр.
Я дам краткое описание конкатенации в JavaScript с помощью оператора +. Хотя мы рассматриваем это как конкатенацию, я бы рассмотрел это как дополнение. Кроме того, в JavaScript вы добавляете только «числа» и «строки».
По сути, добавление JavaScript состоит из двух этапов.
1) шаг 1
преобразовать все операнды в примитивы.
2) шаг 2
Если какой-либо из операндов является строкой, преобразуйте все операнды в строку и верните объединение результатов.
В противном случае преобразуйте все операнды в числа и верните сумму результатов.
Статья ниже поможет вам лучше разобраться в этой операции. "[статья]"
Нам нужно подумать об ассоциативности оператора «+». Это «слева направо».
И самое главное в этой задаче - это операнды.
Если мы перечислим наши операнды
‘b’ ‘a’ + ‘a’ (What is this ?? ) ‘a’
В ПОРЯДКЕ. + ‘a’ - оператор унарного плюса.
Если вкратце говорить об унарном операторе плюса (+), этот оператор стоит перед операндом и пытается преобразовать его в число. Он может преобразовывать все строковые представления чисел, логических значений и null в числа. Число будет включать целые числа, числа с плавающей запятой, шестнадцатеричное, научное представление и бесконечность.
Что наиболее важно, если операнд не может быть преобразован в число, унарный оператор плюс вернет NaN.
Чтобы узнать больше об унарных операторах, полезна эта [статья].
И унарный оператор плюса имеет более высокий приоритет, чем оператор сложения. Таким образом операнд становится «+‘ a ’».
Чтобы узнать больше о приоритете операторов, вы можете прочитать эту [статью] в MDN.
Надеюсь, вы уже получили объяснение. : D
«+‘ a ’» равно NaN, поэтому теперь операнды выглядят примерно так, как показано ниже.
‘b’ ‘a’ NaN ‘a’
Как я упоминал ранее в разделе добавления строк, если хотя бы один операнд является строкой, тогда все операнды преобразуются в строки.
‘b’ ‘a’ ‘NaN’ ‘a’
Теперь добавление этих операндов дает «baNaNa», и когда мы преобразуем его в нижний регистр, он становится «банан».
Это действительно простое объяснение, когда вы знаете все факты.
Надеюсь, вы узнали что-то из этого. : D: D