在javascript函数中为布尔参数设置默认值

jro*_*ode 9 javascript

我曾经习惯typeof foo !== 'undefined'在javascript函数中测试可选参数,但是如果我想要这个值true或者false每次都是这样,那么最简单,最快捷或最彻底的方法是什么?看起来它可能比这更简单:

function logBool(x) {
    x = typeof x !== 'undefined' && x ? true : false;
    console.log(x);
}

var a, b = false, c = true;
logBool(a); // false
logBool(b); // false
logBool(c); // true
Run Code Online (Sandbox Code Playgroud)

小智 24

你可以跳过三元组,并评估"不是不是x",例如!!x.

如果x未定义,!x则为true,因此!!x再次变为false.如果x为真,!x则为false,所以!!x为真.

function logBool(x) {
    x = !!x;
    console.log(x);
}

var a, b = false, c = true;
logBool(a); // false
logBool(b); // false
logBool(c); // true
Run Code Online (Sandbox Code Playgroud)