Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ES6JavaScript中的括号_Javascript_Brackets_Braces - Fatal编程技术网

ES6JavaScript中的括号

ES6JavaScript中的括号,javascript,brackets,braces,Javascript,Brackets,Braces,我非常希望有人能给我一些简洁的信息,告诉我什么时候应该在JSES6中使用哪个括号,在哪里,为什么要使用。我知道一些基本知识,但当我们开始讨论箭头语法时,我只是失去了它,然后不明白为什么我们要把大括号括在括号中等等。。。我觉得,为了真正理解我们为什么要这样做,我需要首先了解{}和()的所有用例 比如说。我真的很难想出这样的语法: const func = (obj) => { console.log(obj.a) } func({a: "blue"}) myFunc({ a: 1 })

我非常希望有人能给我一些简洁的信息,告诉我什么时候应该在JSES6中使用哪个括号,在哪里,为什么要使用。我知道一些基本知识,但当我们开始讨论箭头语法时,我只是失去了它,然后不明白为什么我们要把大括号括在括号中等等。。。我觉得,为了真正理解我们为什么要这样做,我需要首先了解{}和()的所有用例

比如说。我真的很难想出这样的语法:

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

func({a: "blue"}) 
myFunc({ a: 1 }); // same as myFunc(obj);
myFunc({ name: 'Jo' });
这是我在这里挣扎的func({a:“blue”})部分

下面是另一个例子:

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

function makeSound(options)
console.log("the" + options.a + "was a " + options.c)
const { a } = { a: 1 };
我不知道该怎么看。我们用makeSound在顶部做什么?我可以看到我们正在创建一个对象,但为什么不使用标准的let makeSound={}将其声明为一个变量呢。我们到底在这里干什么?在我们将makeSound转换成代码后面的函数之前,makeSound什么都没有吗

这是我在这里挣扎的func({a:“blue”})部分

{a:“blue”}
是一个对象文本。结果对象作为参数传递给
func(…)

我可以看到我们正在创建一个对象,但为什么不使用标准的let makeSound={}将其声明为一个变量呢

因为它只需要一次

…将给出相同的结果,但现在您有了一个不再需要的
details
变量

在我们将makeSound转换成代码后面的函数之前,makeSound什么都没有吗


函数声明被挂起,因此它是一个函数,即使声明稍后出现。

我理解您的困惑,因为确实有很多花括号

首先,对象。 您可以使用这样的括号定义对象

const obj = { a: 1 };
但您也可以使用如下对象文字,直接在函数参数列表中内联定义对象:

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

func({a: "blue"}) 
myFunc({ a: 1 }); // same as myFunc(obj);
myFunc({ name: 'Jo' });
然后就有了箭头功能

它们的主体也使用大括号定义,就像常规函数一样,在这种情况下,如果要从函数返回值,则必须使用
return
关键字:

const myFunc = (arg) => { return 'hello ' + arg; }
但是,arrow函数也支持隐式返回,如果省略大括号,返回值将是隐式的:

const myFunc = (arg) => 'hello ' + arg;
现在,您还可以将大括号用于解构赋值。 例如:

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

function makeSound(options)
console.log("the" + options.a + "was a " + options.c)
const { a } = { a: 1 };
这里的解构发生在
=
的左侧,它允许您从对象中提取属性并将它们分配给变量

您还可以在函数参数中使用对象分解来访问特定属性,如下所示:

const myFunc = ({ name }) => 'Hello ' + name;
这相当于:

const myFunc = (person) => 'Hello ' + person.name;
您可以使用如下对象文本调用此函数:

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

func({a: "blue"}) 
myFunc({ a: 1 }); // same as myFunc(obj);
myFunc({ name: 'Jo' });
(obj)基本上是说func函数将obj作为参数

如果你只通过一个论点,你也可以这样写

const func = obj => {
    console.log(obj.a)
}
括号的作用基本上是让您能够添加多个参数。如下图所示

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

func({a: "blue"}) 
下一个函数({a:“蓝色”})

基本上,在这里,您使用对象作为参数来调用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
}

它是一个以对象为参数的函数。函数的用途是,您可以在需要时实例化它,但变量是在运行时创建的。第二个代码段不完整,因为没有定义makeSound函数谢谢您的回答。肯定有帮助。我刚刚在练习销毁,我注意到当使用箭头语法声明我的函数时,我不再具有提升功能。为什么会这样?函数声明是托管的。箭头函数不是函数声明,就像传统的函数表达式一样,它们在赋值时被赋值。这正是我需要的。当你把一切都像那样摆出来的时候,它看起来是那么清晰和明显。谢谢