我有一个函数read()
,它作为一个布尔参数。如果传递false
- read(false)
- 则不应运行代码块。它适用于以下三种变体,但我不确定它们之间的区别或是否重要?
但我不明白变化之间的区别。
这三种变化都有效。
this.first_time_here = first_time_here !== false;
var first_time_here = first_time_here !== false;
var first_time_here = first_time_here || false;
阅读功能
function read (first_time_here) {
var first_time_here = first_time_here !== false;
// check to see what the function thinks first_time_here is
console.log("first time here is: " + first_time_here);
if (typeof first_time_here === 'boolean') {
console.log('Yes, I am a boolean');
}
if (first_time_here) {
// do something if true
};
};
谢谢
答案 0 :(得分:2)
如果您期望虚假值,请使用typeof
:
var x = typeof x !== 'undefined' ? x : false;
否则,如果你这样做:
var x = x || true;
传递false
,x
的值为true
。
答案 1 :(得分:1)
这是因为Javascript中的概念自动转换,undefined
值转换为false
。因此,三行类似,以确保变量first_time_here
为false
,而不是undefined
。
如果first_time_here
是undefined
:
first_time_here = undedined !== false -> first_time_here = false != false
-> first_time_here = false;
和
first_time_here = undedined || false -> first_time_here = false || false
-> first_time_here = false;