写法一:
const foo = (data) => {
if(data.length < 3) data = [1,2,3]
return data.map(ele => ele + 1)
}
写法二:
const bar = (data) => {
if(data.length < 3) return bar([1,2,3])
return data.map(ele => ele + 1)
}
这两种写法哪种更好?或者其他更好的写法?
写法一:
const foo = (data) => {
if(data.length < 3) data = [1,2,3]
return data.map(ele => ele + 1)
}
写法二:
const bar = (data) => {
if(data.length < 3) return bar([1,2,3])
return data.map(ele => ele + 1)
}
这两种写法哪种更好?或者其他更好的写法?
|
akatquasDec 20, 2018 via iPhone
1
我选第一种,效率和空间都略好一点
|
|
weixiangzheDec 20, 2018 via iPhone
2
2, 不要直接改参数变量 会有不可预计的东西
|
|
AthrobDec 20, 2018 via Android
3
个人感觉写法一比较好。写法二 bar 改成 bar2,函数里面也得改。
|
|
CbdyDec 20, 2018
4
```
function bar(data: number[]) { let res = [2, 3, 4] if (data.length > 3) { res = data.map(e => e + 1) } return res } ``` |
|
V2exUserDec 20, 2018 via Android
5
第一种,清晰
|
|
MutooDec 20, 2018
6
2 有 stack overflow 的风险(例如不小心写成 return bar([1,2]) 时,data.length < 3 永远成立)
|
|
dixeranDec 20, 2018 via Android
7
所以综合考虑 2L 和 3L,用方法二然后改成 callee?
|
|
Justin13Dec 20, 2018 via Android
8
第二个,能纯尽量纯。
或者 ```js const foo = (data) => { const newData = data.length < 3 ? [1,2,3] : data; return newData.map(ele => ele + 1) } ``` |
|
yuanfnadiDec 20, 2018
9
const foo = data => {
if (data.length < 3) { return [2, 3, 4]; } return data.map(ele => ele + 1); }; |
|
whileFalseDec 20, 2018
10
|
|
otakustayDec 20, 2018
11
你不让我写三元的话,肯定选第 2 种,if 分支多起来也是不同分支不同 return。选择不去改变任何一个变量 /参数的值是很好的实践
|
|
wly19960911Dec 20, 2018
12
2 的写法究竟是哪里来的。function 减少对外界变量的依赖,这个封装的基础。
const foo = (data) => { if(data.length < 3) return [1,2,3] return data.map(ele => ele + 1) } 这样最好 |
|
cuzfinalDec 20, 2018
13
选 2,不要改参数
|
|
yikyoDec 20, 2018
14
第一种 ESLint 检测过不去。不能修改参数值。
|
|
jorneyrDec 20, 2018
15
只看得懂 1
|