我在使用需要考虑全局变量的javascript函数时遇到问题。
这是我想要实现的一种控制机制,但我似乎无法做到这一点。
这是相关代码
<script type="text/javascript">
var active = 0;
function SetEndTime(lngOpenPersonID,lngToDoID){
if(active = 0){
alert('Time has been stopped');
}
else{
var strURL = 'blabla';
CallAJAXURL(strURL);
}
active = 0;
}
function SetStartTime(lngToDoID,lngToDoItemID,bitCountsForTotal){
if(active = 1){
alert('Time has been started');
}
else{
var strURL = 'blabla';
CallAJAXURL(strURL);
}
active = 1;
}
当我在没有做任何其他事情的情况下调用SetStartTime时,我总是收到警报。我的语法有问题吗?
答案 0 :(得分:4)
if (active == 0) {
您需要 2 “=”字符才能生成比较运算符。还有===
执行没有类型提升的相等比较。
您的代码在语法上是正确的,因为赋值操作是一个有效的表达式。您拥有的第一个if
声明:
if (active = 0) {
永远不会是true
,因为表达式的值始终为零。第二个:
if (active = 1) {
相反总是true
因为值总是一个。
答案 1 :(得分:2)
它不是(alert = 1)
..它的( alert == 1 )
..你的情况说它始终是真的 - 你的分配警报1