关于es2015箭头函数的大括号代码块部分的一点理解

背景:在react中,遍历一个数组,生成一系列input插入dom

错误代码:

{phones.map((phone, index) => {
    <div key={index}>{index}</div>
})}

控制台源码:

phones.map(function (phone, index) {
    _react2.default.createElement(
        'div',
        { key: index },
        index
    );
})

这里只是创建了元素节点,并没有return返回dom节点,结果页面没有插入创造的dom节点。

正确代码:(去掉大括号)

{phones.map((phone, index) => 
    <div key={index}>{index}</div>
)}

控制台源码:

phones.map(function (phone, index) {
    return _react2.default.createElement(
        'div',
        { key: index },
        index
    );
})

这里有return,结果页面插入dom节点。

实践:

不使用大括号,arrow function默认添加return。
而使用大括号,就只是一个代码块,so arrow function的return不会添加,需要的话必须手动添加。

一般使用箭头函数时,代码块部分只有一条语句时,不使用大括号:

var sum = (num1, num2) => num1 + num2
//同样的写法
var sum = (num1, num2) => { return num1 + num2 }

等同于

var sum = function(num1, num2) {
  return num1 + num2;
};

如果有多条语句,使用大括号,同时使用return(否则没有返回值):

var sum = (n1, n2) => {
  console.log(n1);
  return n1 + n2
}

使用箭头函数返回对象:必须在对象外面加上括号,否则就只是个代码块,从而就不会返回对象了:

var sum = () => ({name: 'a'})

等同于

var sum = function sum() {
  return { name: 'a' };
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 9,142评论 0 7
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,786评论 0 13
  • 与人交往,须淡须真。清风明月,亦淡亦真。淡里有真,有真必淡。淡中见真,真中识淡...
    冰夫阅读 2,325评论 0 0
  • 一场大雨过后,天放晴了,地上被雨砸出了一个小小水坑,似一汪小湖。水底飘荡着的植物绿夹杂着黑,水面上游荡着好几条肉眼...
    雪鲸呀阅读 2,271评论 8 1

友情链接更多精彩内容