Javascript 在变量声明中使用条件
我正在尝试检测浏览器上的“不跟踪”设置。。。origionla工作代码为: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
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”由于javascript丢失键入,代码>结果变为true
。这意味着这DNT===DNT真
相当于DNT===真
这不是真的,“yes”| |“1”
结果是“yes”
好的,那么我如何使它等于“yes”或“1”?第一个条件有什么问题吗?真的没有问题,就像重新编写一些东西来帮助改善我的JSthisDNTtrue=“yes” || "1";由于javascript丢失键入,代码>结果变为true
。这意味着这DNT===DNTtrue
相当于DNT===true
这不是真的,“yes”| |“1”
结果是“yes”
好的,那么我如何使它等于“yes”或“1”?第一个条件有什么问题吗?真的没有问题,就像重新编写东西来帮助改进我的JSLegend!!你能再解释一下内部工作原理吗?3分钟后接受谢谢,现在理解得更好了,将来一定会用这个技术传奇!!你能再解释一下内部工作原理吗?3分钟后接受谢谢,现在理解得更好了,将来一定会使用这种技术