Javascript简写布尔类型

时间:2017-08-10 14:33:42

标签: javascript boolean shorthand

对不起,如果这个问题看起来很旧,但好奇的答案。 所以我有以下代码段

function halo(firstname, lastname) {
  lastname = lastname || 'no last name';
  console.log(firstname + ' ' + lastname);
}

function testbol(start) {
  start = start || true;
  console.log(start);
}

halo('jee');
halo('jee', 'tan');
    
testbol();
testbol(false);

问题是:为什么第二个testbool函数产生truefalse

3 个答案:

答案 0 :(得分:2)

如果左侧是真值,则

left || right评估为左侧,否则评估为右侧。

false || true评估为右侧,true

简而言之:您正在测试真实性而不是定义,这将是:

testdefined();
testdefined(false);

function testdefined(start){
    start = typeof start === "undefined" ? true : start; ;
    console.log(start);
}

答案 1 :(得分:0)

您的上一个语句评估 false || true ,其值为true。

答案 2 :(得分:-1)

“假或真”是真的。考虑一句“天空是红色的还是天空是蓝色的” - 是真还是假?