奇怪的Javascript语句

奇怪的Javascript语句,javascript,Javascript,上述声明的含义是什么?我的意思是,它看起来总是会执行的,那么为什么还要麻烦使用if语句呢 更新:一个原因可能是服务器端的脚本残余。还有其他想法吗 updated2:可以很容易地更改赋值值,而不必麻烦使用if语句,否?我以前见过这种情况,我一直认为这是一些旧条件的残余,不再需要,但从未删除。我看不出有任何实际的理由去做这样的事情。可能是if语句用于检查合法的条件,然后有人用truthy值替换它以进行测试/调试等 您是对的,它将始终执行,因为1是真实的。我将浏览您的源代码管理历史,并调查这行代码,看

上述声明的含义是什么?我的意思是,它看起来总是会执行的,那么为什么还要麻烦使用
if
语句呢

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


updated2:可以很容易地更改赋值值,而不必麻烦使用
if
语句,否?

我以前见过这种情况,我一直认为这是一些旧条件的残余,不再需要,但从未删除。我看不出有任何实际的理由去做这样的事情。

可能是if语句用于检查合法的条件,然后有人用truthy值替换它以进行测试/调试等


您是对的,它将始终执行,因为
1
是真实的。我将浏览您的源代码管理历史,并调查这行代码,看看它是否包含真正的条件语句。如果条件始终为
1
,则它很可能是调试语句。否则,可能有人认为这是一个暂时的改变,也可能不想把它签入(这可能是不好的)

可能是因为编写代码的人想要一种简单的方法来关闭和再次打开代码,如果块中有很多代码(这里不是这样),这一点特别有用


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

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

我不确定这段代码来自哪里,但正如您所指出的,它将始终执行。至于为什么要这样做,有时您希望看到分支代码的结果是什么,而无需设置环境。在这种情况下,您可以注释掉实际值,并将其替换为
if(1)
以进行测试:

if (1) {
  google_conversion_value = 1;
}

当然,这样做的问题是,有时很容易忘记删除if(1)并取消对适当条件的注释。

有两种可能的解释:

  • 这是调试的遗留问题
  • 包含此代码的文件是动态生成的,原始源代码包含类似于
    if()

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

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

    // 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(){
    //代码在这里
    }
    
    这实际上是谷歌推荐的javascript(点击第2步查看示例HTML)

    使用变量而不是文字
    1
    是的,变量可能更好-尤其是在逻辑复杂的情况下。虽然我在尝试时经常使用“if(1==1)”,但它不如变量好,但比文字“1”更容易阅读。从来没有(应该)进入生产代码,只是在尝试简单的东西时很容易,特别是JS特效的选项。虽然我觉得上面的答案也很合法,只是指出来源有点权威。我在该链接中没有看到任何相关内容,你必须点击“步骤2”显示一些文本和示例。该示例包含以下内容:``if(10.0){var google\u conversion\u value=10.0}``我只是在代码段中指出这些条件的来源。您还可以在Google提供的一些示例中找到它们,这些示例用于以各种语言打印代码片段。
    if (<% if (my_server_condition) then Response.Write("1") else Response.Write("0") %>){
        // code goes here
    }