我读到JavaScript中的双管道检查变量是否虚假,而undefined是JavaScript中的虚假值,例如



因此,我尝试了一下,发现未定义的确不会被评估为虚假,而是抛出错误:

let elemContent = document.getElementById('content');

let a = null;
let b = 2;

elemContent.innerHTML += a || 'ok'; // "ok"
elemContent.innerHTML += b || 'ok'; // "2"
elemContent.innerHTML += whatever || 'ok'; // "ERROR: whatever is not defined"

http://jsfiddle.net/ueqo6yko

undefined在JavaScript中是否是伪造的值,或者人们如何理解这一矛盾?

最佳答案

因为在您的代码中,whatever不仅是undefined,而且并未声明为

为避免此错误,您可以执行以下操作:

let elemContent = document.getElementById('content');

let a = null;
let b = 2;

elemContent.innerHTML += a || 'ok'; // "ok"
elemContent.innerHTML += b || 'ok'; // "2"
elemContent.innerHTML += (typeof whatever !== 'undefined' && whatever) || 'ok3'; // "ok3"

09-10 11:23
查看更多