Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的JavaScript表达式_Javascript - Fatal编程技术网

奇怪的JavaScript表达式

奇怪的JavaScript表达式,javascript,Javascript,有时,在阅读他人编写的代码时,我会遇到我不理解的代码行,例如: var acceptBtn = document.getElementById('saveBtn'); (acceptBtn) && (acceptBtn.disabled = false); 第二行的确切含义是什么?为什么缩写成这样 它是“如果acceptBtn不是“falsy”,则将其disabled属性设置为false”的缩写 即: 这是一种奇怪的语法,但它是: if(acceptBtn) acc

有时,在阅读他人编写的代码时,我会遇到我不理解的代码行,例如:

 var acceptBtn = document.getElementById('saveBtn');
 (acceptBtn) && (acceptBtn.disabled = false);
第二行的确切含义是什么?为什么缩写成这样

它是“如果
acceptBtn
不是“falsy”,则将其
disabled
属性设置为
false
”的缩写

即:


这是一种奇怪的语法,但它是:

if(acceptBtn)
    acceptBtn.disabled = false;

但是我个人永远不会用它。。可读性差。

第二行利用了Javascript中布尔运算短路的事实,也就是说,如果第一部分的计算结果为false,那么第二部分就永远不会执行

它还利用了javascript可以在布尔表达式中使用truthy/false值这一事实

因此,第二行表示,如果
acceptBtn
为false(可能为null或undefined),则不再继续,否则将
disabled
属性设置为false


它会停止javascript运行,使其等同于空引用异常。

不仅仅是
null
值,还包括通过类型强制计算为
false
的任何内容。所以
0
未定义
,等等
if(acceptBtn)
    acceptBtn.disabled = false;