Javascript 箭头后面有一个()表示什么?
我偶然发现了这个代码。我一直在使用{}格式的arrow函数,这个()包装器是什么意思?这是ES6 arrow函数。更多内容请阅读: ES6Javascript 箭头后面有一个()表示什么?,javascript,ecmascript-6,Javascript,Ecmascript 6,我偶然发现了这个代码。我一直在使用{}格式的arrow函数,这个()包装器是什么意思?这是ES6 arrow函数。更多内容请阅读: ES6 (state,action)=>({post:action.msg}) ES5 这是ES6的箭头函数。更多内容请阅读: ES6 (state,action)=>({post:action.msg}) ES5 对于箭头函数,可以使用单个语句或块作为函数体。这两个是等效的: function(state, action) { return { post
(state,action)=>({post:action.msg})
ES5
这是ES6的箭头函数。更多内容请阅读: ES6
(state,action)=>({post:action.msg})
ES5
对于箭头函数,可以使用单个语句或块作为函数体。这两个是等效的:
function(state, action) {
return { post: action.msg };
}
在您的示例中,如果lambda被定义为()=>{post:action.msg}
,那么对象({}
)将被解释为一个实体块,而不是一个对象。运行时将尝试将其解析为等效项:
() => foo
() => {
return foo;
}
function () {
post: action.msg
}
这是一个命名标签和属性访问,在这里没有多大意义。通过使用parens进行包装,可以向解析器提示它是一个要求值的表达式,并且单个表达式体上的fat arrow函数规则生效,使其等效于:
() => foo
() => {
return foo;
}
function () {
post: action.msg
}
要在需要执行两个相关操作(在map/reduce算法中偶尔有用)时绕过单个表达式规则,可以使用parens对一对表达式进行分组:
function () {
return {post: action.msg};
}
这将设置c
的counted
属性,然后将c.value
添加到p
,并将p+=c.value
的结果返回为p
的新值
括号括起ECMAScript中的表达式,并可与逗号运算符一起用于对多个表达式进行分组。计算组时,将返回最后一个表达式的结果
例如:
foo.reduce((p, c) => (c.counted = true, p += c.value));
将打印
2 10
,因为j
在()
组中递增,以后再打印。使用箭头函数,可以使用单个语句或块作为函数体。这两个是等效的:
function(state, action) {
return { post: action.msg };
}
在您的示例中,如果lambda被定义为()=>{post:action.msg}
,那么对象({}
)将被解释为一个实体块,而不是一个对象。运行时将尝试将其解析为等效项:
() => foo
() => {
return foo;
}
function () {
post: action.msg
}
这是一个命名标签和属性访问,在这里没有多大意义。通过使用parens进行包装,可以向解析器提示它是一个要求值的表达式,并且单个表达式体上的fat arrow函数规则生效,使其等效于:
() => foo
() => {
return foo;
}
function () {
post: action.msg
}
要在需要执行两个相关操作(在map/reduce算法中偶尔有用)时绕过单个表达式规则,可以使用parens对一对表达式进行分组:
function () {
return {post: action.msg};
}
这将设置c
的counted
属性,然后将c.value
添加到p
,并将p+=c.value
的结果返回为p
的新值
括号括起ECMAScript中的表达式,并可与逗号运算符一起用于对多个表达式进行分组。计算组时,将返回最后一个表达式的结果
例如:
foo.reduce((p, c) => (c.counted = true, p += c.value));
将打印2 10
,因为j
在()
组中递增,以后再打印。来自
返回对象文本
请记住,使用简明语法返回对象文本
params=>{object:literal}将无法按预期工作:
var func=()=>{foo:1};//调用func()返回
未定义!var func=()=>{foo:function(){}//
SyntaxError:函数语句需要名称
这是因为大括号({})中的代码被解析为
语句(即foo被视为标签,而不是对象中的键
文字)
请记住将对象文字括在括号中:
var func=()=>({foo:1})
所以。。如果要返回对象文字,请将其包装在()中
返回对象文本
请记住,使用简明语法返回对象文本
params=>{object:literal}将无法按预期工作:
var func=()=>{foo:1};//调用func()返回
未定义!var func=()=>{foo:function(){}//
SyntaxError:函数语句需要名称
这是因为大括号({})中的代码被解析为
语句(即foo被视为标签,而不是对象中的键
文字)
请记住将对象文字括在括号中:
var func=()=>({foo:1})
所以。。如果要返回对象文字,请将其包装为()是否确定这是Javascript?它不会在我的控制台中解析。我认为这是Coffeescript或其他类似的衍生语言。这看起来像一个lambda表达式,JS不支持。这是一项新技术,是ECMAScript 2015(ES6)标准的一部分。这项技术的规范已经定稿,但请查看兼容性表,了解在各种浏览器中的使用情况和实现状态。arrow函数表达式(也称为fat arrow函数)与函数表达式相比具有更短的语法,并在词汇上绑定此值。箭头函数总是匿名的。所以你已经知道了“箭头函数”的术语和概念。。。不确定还有什么要告诉你的。你确定这是Javascript吗?它不会在我的控制台中解析。我认为这是Coffeescript或其他类似的衍生语言。这看起来像一个lambda表达式,JS不支持。这是一项新技术,是ECMAScript 2015(ES6)标准的一部分。这项技术的规范已经定稿,但请查看兼容性表,了解在各种浏览器中的使用情况和实现状态。arrow函数表达式(也称为fat arrow函数)与函数表达式相比具有更短的语法,并在词汇上绑定此值。箭头函数总是匿名的。所以你已经知道了