接手其他同事的二手代码。
发现很多写法都看不懂是什么意思?
比如:特别喜欢用括号和逗号。
不知道这样写有什么用?
如图:
个人风格习惯,当然这不是什么好的习惯。
在调试时,这种代码更不容易被断点。
当然,在一些场景下,这个 逗号
也有一些用途,见:逗号操作符,它会将最后一个操作数的值返回,比如在函数中写。
function foo(){
return (1, 2, 3, 4)
}
最终返回的其实是 4
。
就是逗号操作符,仅返回最后一个值作为返回值。
在实际工作中不会被推荐这种写法,因为在一定程度上降低可读性。
但通过 webpack 之类的 bundle 打包工具处理后多数会编译为这种写法,使用逗号分隔操作符代码会更短、体积更小,浏览器可不在乎 js 代码的可读性~
看大家好像都不喜欢这种风格,我感觉还好吧,说装*什么的,严重了。
楼主贴的代码,看啥去还是很清晰的。
如果用分号,总感觉这是三行代码,排版错乱了,全都跑到了一行的感觉:
this.aaa(); this.bbb(); this.ccc();
但如果是逗号,似乎视觉上更合情合理一点:
this.aaa(), this.bbb(), this.ccc();
在一个模块顶部,申明变量时可以节约很多冗余:
let aaa, bbb=0, ccc=false, ddd=null, eee='';
// 等同于:
let aaa; let bbb=0; let ccc=false; let ddd=null; let eee='';
箭头函数的意义之一就是减少书面,用逗号可进一步省略 return 关键字:
a=>(a++,a)
// 等同于:
a=>{a++; return a}
最后说个题外话,当年刚入门时,我看到这样的代码非常、非常、非常的讨厌:
// 这是在装什么,害的我捋代码时大脑混乱:
if(xxx) xxxxx;
// 为什么就不能老老实实写成,清晰明了:
if(xxx) {
xxxxx;
}
而多年后的我,常常写这样的代码,真香:
function() {
if(xxx) return toast('error info 1');
if(xxx) return toast('error info 2');
……
}
10 回答11.3k 阅读
7 回答5.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
使用工具优化过后的代码会大量使用逗号运算符。但是人工写的代码不推荐使用逗号运算符来分隔语句,一句一行,分号分隔(也有些项目规范不使用分号的)
像题主给的这些示例就是典型的反例,一个一个完全是意义明确而且独立的语句,就算写在一行,也应该使用分号而不是逗号来分隔(当然也不推荐多个语句写在同一行,简短的流程控制语句(比如
if (xx) { return; }
)除外。当然逗号分隔符有时候也还是需要用的,比如在 reduce 的时候,可能会遇到这种情况
这里需要操作 acc,又需要返回 acc,然而 push 返回的是新的数组长度,所以只好用逗号运算来把 acc 处理为表达式返回值。
当然这也可以写成
没毛病。但上面的逗号分隔并不是简单地用逗号来拼接多个语句,而是把语句(块)变成了表达式,与题主贴出来的代码有本质的不同。