我在看别人代码的时候,有看到代码是这样写的
function(){
fn&&fn()
}
大概意思是这么个意思,但是这我感觉这样写好像没意义,有带佬能指点一下吗
要是 fn 不存在那肯定会直接报错 fn undefined ;要是 fn 存在;那直接执行 fn() 就好了
只有有 fn 这个变量的时候才会当成函数执行,否则不执行,console 就不会报错了?
自抛自扣??
处理回调
if (fn) {
fn()
}
大部分情况是 1 楼这个意思,如果 fn 是 undefined 就不执行 fn()。React 针对 optional callback 会这么写。
ok
错了,fn 不存在就什么都不做,不会报错,fn 存在才尝试执行 fn
短路。另外不会报错。
if (fn) {
fn()
}
没注意和 5 楼重复了 用 if 语句就更好理解了吧
这种不标准的写法完全是负分,竟然还有人用来装 B…
在 js 里面,这是标准的。大幅减少代码量,比三目运算更直接了当。别的语言大同小异:fn?.xx()
这个扯不上装吧,React 的 JSX 里面经常这么些。
大幅减少代码量?可读性的下降之后,代码量的减少有意义吗?这分明是不能区分判断语句和条件表达式的区别导致的
与其:
abc && fn && fn(abc)
不如:
if (abc && fn) {
fn(abc)
}
React JSX 里面的标准写法应该是这样
{fn ? fn(abc) : null}
短路, bash 里常见
不会报错,fn 即!!fn 。这个写法通常在回调里用。有 fn 就执行 fn
那是你们组的标准不是所有人的标准,fn && fn(abc) 也是可以的
比三目运算更直接了当:可读性更好的意思