奇怪的Javascript声明

时间:2011-05-12 12:35:33

标签: javascript

if (1) {
  google_conversion_value = 1;
}

以上陈述的含义是什么?我的意思是,这看起来总会执行,所以为什么要烦扰if语句?

更新:一个原因可能是服务器端脚本的残余。还有其他想法吗?

updated2:可以轻松更改作业的价值而无需使用if语句,不是吗?

8 个答案:

答案 0 :(得分:4)

有两种可能的解释:

  1. 这是调试的遗留物。
  2. 包含此代码的文件是动态生成的,原始源代码包含if(<?php echo $some_stuff_enabled; ?>)
  3. 之类的内容

    然而,在后一种情况下,只有在满足条件时输出该代码块才会更清晰 - 但是它可能在一些蹩脚的模板引擎中使用,只允许替换而不是条件......

答案 1 :(得分:2)

我以前见过这个,我一直认为这是一个不再需要的旧情况的残余,但从未被删除过。我看不出有什么理由去做那样的事情。

答案 2 :(得分:2)

也许用于检查合法条件的if语句,然后有人用测试/调试/等的truthy值替换它。

你是对的,它会一直执行,因为1是真的。我将浏览您的源代码控制历史记录并调查该行以查看它是否曾用于包含实际条件。如果条件总是1,那么它可能是一个调试语句。否则有人可能意味着它是一个临时的改变,并且可能没有意图检查它(这可能是坏的)。

答案 3 :(得分:2)

可能因为编写代码的人希望有一种简单的方法可以将其关闭再打开,如果块内有很多代码(这里不是这种情况),这将非常有用。

另一种可能性是原始程序员无法编写逻辑,或者更可能的是,它没有被指定,所以“if”被留下作为占位符。

答案 4 :(得分:2)

很可能从调试版本或类似的东西中留下。你是对的,它总会执行。它也可以像这样完成,以便通过将if设置为0来轻松启用/禁用它。也许开发人员打算在代码中的其他地方使用它作为标志?

答案 5 :(得分:2)

实际上,当从服务器驱动“if”条件时会发生这种情况,因此在条件为false时,不是做正确的事情而不是生成脚本,它们会执行以下操作:

if (<% if (my_server_condition) then Response.Write("1") else Response.Write("0") %>){
    // code goes here
}

答案 6 :(得分:0)

我不确定此代码的来源,但正如您所说,它将始终执行。至于为什么要这样做,有时候你想要看看分支代码的结果是什么,而不必设置环境。在这种情况下,您可以注释掉实际值并将其替换为if(1),而不是用于测试:

// if( ... some hard to achieve condition )
if (1) {
  // Now you can see what happens if this value is set quickly
  google_conversion_value = 1;
}

当然,问题在于,有时很容易忘记删除if(1)并取消注释正确的条件。

答案 7 :(得分:0)

这实际上是Google在http://support.google.com/adwords/bin/answer.py?hl=en&answer=1722054#nocomments上推荐的javascript(点击步骤2获取示例HTML)

相关问题