对不起,如果这个问题看起来很旧,但好奇的答案。 所以我有以下代码段
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
函数产生true
,false
答案 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)
“假或真”是真的。考虑一句“天空是红色的还是天空是蓝色的” - 是真还是假?