Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 在变量声明中使用条件_Javascript_Variables_Conditional Statements - Fatal编程技术网

Javascript 在变量声明中使用条件

Javascript 在变量声明中使用条件,javascript,variables,conditional-statements,Javascript,Variables,Conditional Statements,我正在尝试检测浏览器上的“不跟踪”设置。。。origionla工作代码为: if(navigator.doNotTrack == "yes" || navigator.doNotTrack == "1" || navigator.msDoNotTrack == "1"){ alert("true"); }else{ alert("false"); } 我试图稍微重写它,我想知道如何在变量声明中使用条件?我想出了一个不起作用的片段,我想知道是否有人能帮我 var DNT

我正在尝试检测浏览器上的“不跟踪”设置。。。origionla工作代码为:

if(navigator.doNotTrack == "yes" || navigator.doNotTrack == "1" || navigator.msDoNotTrack == "1"){
    alert("true");
}else{
    alert("false");
}
我试图稍微重写它,我想知道如何在变量声明中使用条件?我想出了一个不起作用的片段,我想知道是否有人能帮我

var DNT     = navigator.doNotTrack,
    msDNT   = navigator.msDoNotTrack,
    DNTtrue = "yes" || "1";

if(DNT === DNTtrue || msDNT === DNTtrue){
    alert("true");
}else{
    alert("false");
}

在if语句中尝试DNT.value
使DNTtrue=true不为yes

在if语句中尝试DNT.value
使DNTtrue=true不适用于yes

您不能这样处理它。表达式
“yes”| |“1”
在遇到时进行计算。因此,您最终将
DNT
msDNT
“是”
进行比较。没有办法告诉JS以后对表达式求值。即使如此,
DNT==“yes”| |“1”
DNT==(“yes”| |“1”)
也不会产生期望的结果

下面是另一种解决方案,它只是测试对象中是否存在
DNT
msDNT
的值:

var DNTtrue = {"yes": true, "1": true};

if (DNTtrue[DNT] || DNTtrue[msDNT]) {
    // ...    
}

如果
DNT
msDNT
的值与
的“yes”
的“1”
不同,则
DNTtrue[…]
尝试访问不存在的属性,这将导致
未定义的
(错误值)。

您不能这样访问它。表达式
“yes”| |“1”
在遇到时进行计算。因此,您最终将
DNT
msDNT
“是”
进行比较。没有办法告诉JS以后对表达式求值。即使如此,
DNT==“yes”| |“1”
DNT==(“yes”| |“1”)
也不会产生期望的结果

下面是另一种解决方案,它只是测试对象中是否存在
DNT
msDNT
的值:

var DNTtrue = {"yes": true, "1": true};

if (DNTtrue[DNT] || DNTtrue[msDNT]) {
    // ...    
}

如果
DNT
msDNT
的值不同于
的“yes”
“1”
,则
DNTtrue[…]
尝试访问不存在的属性,这将导致
未定义的
(错误值)。

在现代浏览器中,可以使用数组和
indexOf()
方法:

DNTtrue = ["yes", "1"];

if(DNTtrue.indexOf(DNT) > -1 || DNTtrue.indexOf(msDNT) > -1){
    alert("true");
}else{
    alert("false");
}

在现代浏览器中,可以使用数组和
indexOf()
方法:

DNTtrue = ["yes", "1"];

if(DNTtrue.indexOf(DNT) > -1 || DNTtrue.indexOf(msDNT) > -1){
    alert("true");
}else{
    alert("false");
}

DNTtrue=“yes”| |“1”结果变为
true
。这意味着这
DNT===DNT真
相当于
DNT===真
这不是真的,
“yes”| |“1”
结果是
“yes”
好的,那么我如何使它等于“yes”或“1”?第一个条件有什么问题吗?真的没有问题,就像重新编写一些东西来帮助改善我的JSthis
DNTtrue=“yes” || "1";结果变为
true
。这意味着这
DNT===DNTtrue
相当于
DNT===true
这不是真的,
“yes”| |“1”
结果是
“yes”
好的,那么我如何使它等于“yes”或“1”?第一个条件有什么问题吗?真的没有问题,就像重新编写东西来帮助改进我的JSLegend!!你能再解释一下内部工作原理吗?3分钟后接受谢谢,现在理解得更好了,将来一定会用这个技术传奇!!你能再解释一下内部工作原理吗?3分钟后接受谢谢,现在理解得更好了,将来一定会使用这种技术