Javascript 或门(| |)将false排序为未定义
我有这样一个代码:Javascript 或门(| |)将false排序为未定义,javascript,boolean,switch-statement,gate,Javascript,Boolean,Switch Statement,Gate,我有这样一个代码: var IFS = document.isFullScreen || document.webkitIsFullScreen || document.mozIsFullScreen || document.msIsFullScreen; var IFS = (typeof document.isFullScreen != "undefined") ? document.isFullScreen : (typeof doc
var IFS =
document.isFullScreen ||
document.webkitIsFullScreen ||
document.mozIsFullScreen ||
document.msIsFullScreen;
var IFS =
(typeof document.isFullScreen != "undefined") ? document.isFullScreen :
(typeof document.webkitIsFullScreen != "undefined") ? document.webkitIsFullScreen :
(typeof document.mozIsFullScreen != "undefined") ? document.mozIsFullScreen :
(typeof document.msIsFullScreen != "undefined") ? document.msIsFullScreen :
false;
var arr = ['isFullScreen', 'webkitIsFullScreen', 'mozIsFullScreen', 'msIsFullScreen'];
var IFS = false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] in document) {
IFS = document[arr[i]];
break;
}
}
确切的问题是,|
门将假
排序为未定义
,因为是全屏
是布尔值。
如何修复这个? <代码>未定义是一个FalSee值,意味着<代码> < < /代码>运算符将转换为与“代码> false < /代码>相同。 如果只想找到未定义的第一个值,可以尝试以下方法:
var IFS =
document.isFullScreen ||
document.webkitIsFullScreen ||
document.mozIsFullScreen ||
document.msIsFullScreen;
var IFS =
(typeof document.isFullScreen != "undefined") ? document.isFullScreen :
(typeof document.webkitIsFullScreen != "undefined") ? document.webkitIsFullScreen :
(typeof document.mozIsFullScreen != "undefined") ? document.mozIsFullScreen :
(typeof document.msIsFullScreen != "undefined") ? document.msIsFullScreen :
false;
var arr = ['isFullScreen', 'webkitIsFullScreen', 'mozIsFullScreen', 'msIsFullScreen'];
var IFS = false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] in document) {
IFS = document[arr[i]];
break;
}
}
或作为:
或者可以使用数组,如下所示:
var IFS =
document.isFullScreen ||
document.webkitIsFullScreen ||
document.mozIsFullScreen ||
document.msIsFullScreen;
var IFS =
(typeof document.isFullScreen != "undefined") ? document.isFullScreen :
(typeof document.webkitIsFullScreen != "undefined") ? document.webkitIsFullScreen :
(typeof document.mozIsFullScreen != "undefined") ? document.mozIsFullScreen :
(typeof document.msIsFullScreen != "undefined") ? document.msIsFullScreen :
false;
var arr = ['isFullScreen', 'webkitIsFullScreen', 'mozIsFullScreen', 'msIsFullScreen'];
var IFS = false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] in document) {
IFS = document[arr[i]];
break;
}
}
如果每个元素都未定义,则IFS将未定义。由于undefined是一个伪值,因此您仍然可以使用以下条件语句:
var IFS =
document.isFullScreen ||
document.webkitIsFullScreen ||
document.mozIsFullScreen ||
document.msIsFullScreen;
if(!IFS){
console.log('not full screen');
}
如果您仍然希望在其他变量未定义的情况下保持false
值,则可以使用以下方法:
var IFS =
document.isFullScreen ||
document.webkitIsFullScreen ||
document.mozIsFullScreen ||
document.msIsFullScreen ||
false;
文档中的“isFullScreen”可能更简洁。@NiettheDarkAbsol好的观点,等一下。如果没有所有的
类型的…==“undefined”
混乱。我会给它一个向上投票,对不起,但谁做了向下投票?你需要否定中的操作的结果,使其与第一个示例等效(或几乎是无论如何)。呵呵,很好,我没有想到的第二个代码,谢谢!!()