我是ES6的新手,我知道某些事情,但对以下事情仍然有点困惑,任何人都可以向我提供有关这些新语法的一些细节:
以下只是示例代码段:
1. const { action, stage, conditions } = this.control.ajaxInfo;
究竟是什么叫做?这句话到底会做什么?,我在控制台中尝试了这个,没有任何错误。但是当我试图追踪这3个常量时,它显示未定义。
2. const getControlBindings = (control, context) => ({
control,
context,
setAnswer,
ajaxAction
});
这是一个带有一些=和=>的函数符号,那么这种新语法怎么样:
getControlBindings((control, context) => {
control,
context,
setAnswer,
ajaxAction
})
那么这两种功能之间的主要区别是什么?请帮我低估这个。
答案 0 :(得分:3)
是ES2016 / ES6中对象破坏的示例。在这里,3个单独的const与在equals的左侧提到的具有相同名称的参数的值。即行动,阶段,条件。
var controls = {
action: 'GET',
stage: 'Test'
}
const { action, stage} = controls;
console.log(action) // Outputs GET
是箭头功能的示例。在第一种情况下,你创建一个箭头函数getControllsBinding,它接受控制和上下文参数并返回一个对象
{control,
context,
setAnswer,
ajaxAction }
另一个定义就像是将箭头函数作为参数传递给getControllsBinding函数。注意这里有一些轻微的语法问题,你需要包装
{control,
context,
setAnswer,
ajaxAction }
使用下面的括号
({control,
context,
setAnswer,
ajaxAction })
以下是从ES2015 / ES6开始的一些好材料
箭头功能:https://leanpub.com/understandinges6/read#leanpub-auto-arrow-functions
对象销毁:https://leanpub.com/understandinges6/read#leanpub-auto-object-destructuring
答案 1 :(得分:2)
1)这意味着您的this.control.ajaxInfo
对象必须包含具有这些名称的属性,这些属性将被解构为左侧的变量。
有关详情,请参阅Destructing object in JS
var controls = {
action: 'a',
stage: 'b',
conditions: 'c',
}
const { action, stage, conditions } = controls;
console.log(action);
2)它被称为arrow function。它们也是功能但有一些细微差别。
const getControlBindings = (control, context) => ({
control,
context,
setAnswer,
ajaxAction
});
这是一个函数,它接受参数控制和上下文并返回一个形状为
的对象{
control,
context,
setAnswer,
ajaxAction
}
=>
之后的Everythinig是箭头函数的主体。您可以使用
const getControlBindings = (control, context) => { return ({
control,
context,
setAnswer,
ajaxAction
}); };
如果添加括号体,则需要明确使用return
语句,如果没有添加括号体,则必须编写一个将从函数返回的语句。
答案 2 :(得分:0)
为您找到一个好read。希望它有所帮助。
上还有一个