我在Javascript中使用一个变量,它将通过Php设置,例如var usesInterview = <?php echo 1;?>
如果没有,则var usesInterview = <?php echo 0;?>
我在代码中应该如何处理这个问题?将有一个If语句来检查变量并确定要采用的路由。
我已尝试使用typeof() == 1
,当我将其设置为0时,它仍会执行例程,就好像它在1中一样。
答案 0 :(得分:3)
为什么不用javascript设置它:
usesInterview = 1;
即使您使用PHP设置它,也可以像这样检查:
if (usesInterview === 1){
// variable is equal to 1
}
else if (usesInterview === 0){
// variable is equal to 0
}
请注意===
检查类型以及值。如果您不想检查类型,则需要使用==
,如下所示:
if (usesInterview == 1){
// variable is equal to 1 or "1" or true
}
else if (usesInterview == 0){
// variable is equal to 0 or "0" or "" or false
}
如果您确定类型以及值,则应避免使用后一种方法。
更多信息:
答案 1 :(得分:1)
typeof
将返回值的类型 - "number"
。您正在使用非严格的相等性检查(==
),因此"number" == 1
为true
。
只需使用type-strict相等运算符(===
)检查值:
if (usesInterview === 1) {
// do something
}
else if (usesInterview === 0) {
// do something else
}
在https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators了解有关JavaScript比较运算符的详情。
答案 2 :(得分:1)
你有很多方法可以做到......就是
var usesInterview = <?php echo [0|1];?>
usesInterview ? goingTrueWay() : goingFalsegWay();
或
<?php echo [0|1];?> ? goingTrueWay() : goingFalseWay();
或类似的东西:
var waysCollection = {
0: function () {...} //routine for usesInterview == 0
1: function () {...} //routine for usesInterview == 1
}
waysCollection[<?php echo [0|1];?>]();
你也可以使用其中一个早期建议:
if (<?php echo [0|1];?>) {
// truthy branch
} else {
// falsy branch
}
BTW,如果您希望usesInterview
是布尔值,是/否触发器, - 使用true
/ false
而不是0
/ 1
。以后更容易阅读和理解。对于前
var usesInterview = <?php echo [false|true];?>
if (usesInterview) {
//do this if `true`
} else {
//do this if `false`
}
答案 3 :(得分:0)
当usesInterview
为1时,它是truthy。所以它很简单:
if (usesInterview) {
// truthy branch
} else {
// falsy branch
}