Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 或门(| |)将false排序为未定义_Javascript_Boolean_Switch Statement_Gate - Fatal编程技术网

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”
混乱。我会给它一个向上投票,对不起,但谁做了向下投票?你需要否定中的
操作的结果,使其与第一个示例等效(或几乎是无论如何)。呵呵,很好,我没有想到的第二个代码,谢谢!!()