ES6: Почему мое неправильное расположение скобок все еще дает тот же результат? - PullRequest
0 голосов
/ 28 декабря 2018

Я заметил, что у меня был тип в одном из моих операторов forEach, но я все еще получил тот же результат.

foo = ["bobby", "tommy", "brendan"]

foo.forEach((f => {
    console.log(f)
}))

vs. 

foo.forEach((f) => {
    console.log(f)
})

Мне любопытно, почему результат будет таким же на первом, на котором я сделал опечатку.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Функция стрелки с одним аргументом может быть написана двумя способами:

f => {
    console.log(f)
}

И

(f) => {
    console.log(f)
}

Таким образом, фигурные скобки вокруг части аргумента являются необязательными, если существует только один аргумент.

И установка фигурных скобок вокруг полного выражения ничего не меняет для этого выражения, это:

f => {
    console.log(f)
}

и это

(f => {
    console.log(f)
})

или даже это

((f => {
    console.log(f)
}))

идентичен.

Ваш первый кодовый блок может быть отформатирован следующим образом для лучшего понимания:

foo.forEach(
   // first argument of forEach
   (f => {
      console.log(f)
   })
   // end of argument list of forEach
)

Таким образом, нет неуместных скобок, вы просто удалили дополнительныеодин вокруг f и поместите необязательный один раз вокруг полного выражения.

0 голосов
/ 28 декабря 2018
foo.forEach((f => {
    console.log(f)
}))

forEach принимает два параметра (первый - это метод / функция, а второй - необязательно, какое значение использовать в качестве объекта this при выполнении обратного вызова), обтекание его с помощью () не требуется.Несмотря на то, что с функциями стрелок, если у вас есть один параметр, вам не нужно расширять его, оберните его (), но вам нужно обернуть свои аргументы, если ваш метод имеет несколько аргументов.

Вы можете проверить это для дальнейшего чтения функций стрелок и это для forEach в js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...