将函数的默认参数设置为布尔值的正确方法?

时间:2013-05-05 02:34:33

标签: javascript node.js

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

         };
    };

谢谢

2 个答案:

答案 0 :(得分:2)

如果您期望虚假值,请使用typeof

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

否则,如果你这样做:

var x = x || true;

传递falsex的值为true

答案 1 :(得分: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;