Скобки в ES6 JavaScript - PullRequest
       49

Скобки в ES6 JavaScript

0 голосов
/ 19 февраля 2019

Я отчаянно нуждаюсь в том, чтобы кто-то дал мне лишь краткую информацию о том, когда мне следует использовать, какие скобки, где и почему в JS ES6.Я знаю основы, но когда мы начинаем говорить о синтаксисе стрелок, я просто теряю их, а затем не могу понять, почему мы заключаем в скобки скобки и т. Д. Я чувствую, что действительно хочу понять, почему мы выкладываем вещи так, как мынужно ли мне сначала понять, каковы все варианты использования для {} и ().

Например.Я действительно изо всех сил пытаюсь выработать синтаксис следующим образом:

const func = (obj) => {
console.log(obj.a)
}

func({a: "blue"}) 

Это часть func ({a: "blue"}), с которой я борюсь здесь.

Вот еще один пример:

makeSound({
    a: "bark",
    b: 2,
    c: "hiss"
})

function makeSound(options)
console.log("the" + options.a + "was a " + options.c)

Я не знаю, что с этим делать.Что мы делаем на вершине с makeSound?Я вижу, что мы создаем объект, но почему бы нам просто не объявить его как переменную со стандартным let makeSound = {}.Что мы на самом деле здесь делаем?Является ли makeSound ничем, пока мы не превратим его в функцию ниже по коду?

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Я понимаю вашу путаницу, поскольку в ней действительно много фигурных скобок!

Во-первых, объекты .Вы определяете объект, используя скобки, как это.

const obj = { a: 1 };

Но вы также можете определить объект inline, непосредственно в списке аргументов функции, используя литерал объекта, подобный этому:

myFunc({ a: 1 }); // same as myFunc(obj);

Тогда у вас есть функции стрелок .

Их тела также определены с помощью фигурных скобок, как и обычные функции, и в этом случае вам нужно использовать ключевое слово return, если вы хотите вернутьзначение из вашей функции:

const myFunc = (arg) => { return 'hello ' + arg; }

Однако функция стрелки также поддерживает неявный возврат; если вы опустите фигурные скобки, возвращаемое значение будет неявным:

const myFunc = (arg) => 'hello ' + arg;

Теперь вы можететакже используйте фигурные скобки для задания по удалению .Например:

const { a } = { a: 1 };

Здесь деструктуризация происходит слева от = и позволяет извлекать свойства из объектов и назначать их переменным.

Вы также можете использовать деструктуризацию объектовв аргументах функции, чтобы получить доступ к определенным свойствам, например:

const myFunc = ({ name }) => 'Hello ' + name;

Это эквивалентно:

const myFunc = (person) => 'Hello ' + person.name;

И вы можете вызвать эту функцию с литералом объекта, подобным этому:

myFunc({ name: 'Jo' });
0 голосов
/ 19 февраля 2019
const func = (obj) => {
    console.log(obj.a)
}

(obj) в основном говорит, что функция func принимает obj в качестве аргумента.

Вы также можете написать его как таковой, если передаете только один аргумент;

const func = obj => {
    console.log(obj.a)
}

То, что делает скобка, в основном дает вам возможность добавить несколько аргументов.Так, как показано ниже:

const func = (obj1, obj2) => {
console.log(obj1.a, obj2.a)
}

func({a: "blue"}) 

Следующий func ({a: "blue"})

По сути, здесь вы вызываете функцию func с объектом в качестве аргумента в качестве короткой руки.

Так что вы также можете называть это так

const argument = {a: "blue"}

func(argument)

Также вы можете увидеть много такого типа кода

const func = (obj1, obj2) => console.log(obj1.a, obj2.a)

Видите, больше нетфигурные скобки вокруг console.log ().Вы можете опустить фигурные скобки, когда у вас есть только одна строка в функции.Если у вас несколько строк, вам понадобятся фигурные скобки, чтобы обернуть тело функции следующим образом:

func = (obj) => {
   if (obj.a === "blue") {
      return true
   } 
   return false
}
0 голосов
/ 19 февраля 2019

Это часть func ({a: "blue"}), с которой я борюсь здесь.

{a: "blue"} - это литерал объекта.Полученный объект передается в качестве аргумента func(...).

. Я вижу, что мы создаем объект, но почему бы нам просто не объявить его как переменную со стандартным let makeSound = {}.

Потому что это нужно только один раз .

let details = {
    a: "bark",
    b: 2,
    c: "hiss"
};

makeSound(details);

… даст тот же результат, но теперь у вас есть переменная details, которая вам больше не нужна.

Если makeSound ничего не делает, пока мы не сделаемэто в функцию далее по коду?

объявления функции подняты , так что это функция, хотя объявление появляется позже.

...