const selectedOption = { value: null , ...other }
if (selectedOption && selectedOption.value ) {
console.log('it is?')
}
我认为控制台一定不会发生
,但为什么会发生?
selectedOption.value 为 null,所以它是 falsy value no?
对不起,我错
了是的,null
是一个虚假的值。假值有null
、undefined
、0
、""
、NaN
,当然还有false
。所有其他值都是真实的。
但是,正如马克在评论中指出的那样,这并不一定意味着您不会进入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");
}
对象初始值设定项按源代码顺序处理,因此后面的属性优先于具有相同名称的早期属性。