有时,在阅读其他人编写的代码时,我遇到了一些我不理解的代码行,例如:
var acceptBtn = document.getElementById('saveBtn');
(acceptBtn) && (acceptBtn.disabled = false);
第二行的含义究竟是什么?为什么缩写为这样?
答案 0 :(得分:3)
它的简写为"如果acceptBtn
不是" falsy",则将其disabled
属性设置为false
&#34 ;.
即:
if(acceptBtn){
acceptBtn.disabled = false;
}
答案 1 :(得分:3)
这是一种奇怪的语法,但它是:
的简写if(acceptBtn)
acceptBtn.disabled = false;
我个人从不使用它,但是......可读性差。
答案 2 :(得分:2)
第二行利用了Javascript中的布尔操作短路这一事实,也就是说,如果第一部分评估为假,则第二部分永远不会执行。
它还利用了javascript可以在布尔表达式中使用truthy / falsey值的事实。
因此,第二行说,如果acceptBtn
为假(可能:null或未定义),则不再进一步,否则将disabled
属性设置为false。
它会阻止javascript运行到相当于null引用的异常。