技术解析

在 JS 中存在 "fn && fn() " 执行语句 这个语句有什么意义吗?
0
2021-08-16 20:21:18
idczone

我在看别人代码的时候,有看到代码是这样写的

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) 也是可以的

比三目运算更直接了当:可读性更好的意思
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服