逻辑运算if(null)

时间:2019-03-17 09:40:43

标签: javascript

const selectedOption = { value: null , ...other }
if (selectedOption && selectedOption.value ) {
 console.log('it is?')
}

我认为不能出现控制台
但这是为什么呢?

selectedOption.value为空,所以是假值否?


对不起,我迷失了自己的错误

1 个答案:

答案 0 :(得分:4)

是的,null是一个伪造的值。伪造的值是nullundefined0""NaN,当然还有false。所有其他值都是真实的。

但是,正如Mark指出in a comment所指出的那样,不一定不一定意味着您不会进入if,因为selectedOption.value可能不是null(例如,如果other具有非null value):

const other = {value: 42};
const selectedOption = { value: null , ...other }
if (selectedOption && selectedOption.value ) {
 console.log('it is?')
}

selectedOption.value 肯定会null,如果点差的顺序不同:

const other = {value: 42};
const selectedOption = { ...other, value: null }
if (selectedOption && selectedOption.value ) {
  console.log('it is?');
} else {
  console.log("definitely false");
}

对象初始化程序按源代码顺序进行处理,因此,较晚的属性将取代具有相同名称的较早的属性。