0

我有一个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

         };
    };

谢谢

4

2 回答 2

2

如果您期望错误的值,请使用typeof

var x = typeof x !== 'undefined' ? x : false;

否则,如果您这样做:

var x = x || true;

而传入,则false值为。xtrue

于 2013-05-05T02:36:35.400 回答
1

这是因为 Javascript 中的概念自动转换,undefined值转换为false. 所以三行是相似的,以确保变量first_time_herefalse,不是undefined

如果first_time_hereundefined

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;
于 2013-05-05T02:46:05.067 回答