Javascript ES6之间的差异()=>;()和()=>;{}
我见过一段代码,类似于学习时的反应Javascript ES6之间的差异()=>;()和()=>;{},javascript,reactjs,ecmascript-6,react-jsx,Javascript,Reactjs,Ecmascript 6,React Jsx,我见过一段代码,类似于学习时的反应 const LinkCell = ({rowIndex, data, col, ...props}) => ( <Cell {...props}> <a href="#">{data.getObjectAt(rowIndex)[col]}</a> </Cell> ); 第一个与第二个有何不同?使用()=>()语法想象一下,如果有一个隐式的返回语句,例如()=>{return()}()=>(
const LinkCell = ({rowIndex, data, col, ...props}) => (
<Cell {...props}>
<a href="#">{data.getObjectAt(rowIndex)[col]}</a>
</Cell>
);
第一个与第二个有何不同?使用()=>()语法想象一下,如果有一个隐式的返回语句,例如()=>{return()}()=>()
是()=>{doSomething()或return;}
的一行简写
无论如何,如果您需要更多的操作并且需要不止一行语句,您应该选择()=>{}
语法,否则您可以使用速记语法()=>()
以下语句也被视为一行语句。但是要与()=>()
语法一起使用,您需要在不使用return
语句的情况下重写它
// The below one line statement can be rewritten as below
if (true ) return something;
// rewritten of above one
() => ( a > b ? a : b)
// one line statement
if (true ) invoke(); // This will go like, () => (a ? a.invoke() : b.invoke())
// one line statement
for(var i in results) doSomething();
//And your jsx statement which can be tread as one liner
<Cell {...props}>
<a href="#">{data.getObjectAt(rowIndex)[col]}</a>
</Cell>
//下面的一行语句可以重写如下
如果(真)返回某物;
//重写上述一个
()=>(a>b?a:b)
//单行语句
if(true)invoke();//这将类似于,()=>(a?a.invoke():b.invoke())
//单行语句
对于(结果中的var i)doSomething();
//还有你的jsx语句,它可以作为一行
第二个也可以写入-让sum=(a,b)=>a+b
With()=>()
第二组括号用于分组,因此它不需要return
关键字,而{}
@nnnn()=>(…)
用于React的JSX。如果我没弄错的话,它表示JSX。但是=>{…}
用语句创建一个新块,而=>(…)
类似于=>{return(…)}
。箭头后面的值是返回值,除非您隐式地创建一个新块。@AndrewLi-我不使用JSX,但是()=>()
在纯(ES6)JS中是完全有效的(假设您实际上在第二个括号中放入了一些内容)。@AndrewLi:The(…)
与JSX无关。它们似乎只是为了可读性而添加的。它们也可以在不改变功能的情况下被省略代码>用于在React中的无状态组件中返回JSX。它相当于(…)=>{return(…);}
(…)
表示JSX。同意,此JSX
被视为一行语句,例如if(true)invoke()代码>谢谢你的解释。不幸的是,我认为我不能用我目前的声誉来投票。”()=>()是()=>{doSomething()或return;}的一行简写。“不,它将相当于()=>{return();}
。为这个表单提供正确的术语将非常有用,这就是“简明体”。
// The below one line statement can be rewritten as below
if (true ) return something;
// rewritten of above one
() => ( a > b ? a : b)
// one line statement
if (true ) invoke(); // This will go like, () => (a ? a.invoke() : b.invoke())
// one line statement
for(var i in results) doSomething();
//And your jsx statement which can be tread as one liner
<Cell {...props}>
<a href="#">{data.getObjectAt(rowIndex)[col]}</a>
</Cell>