Vanilla JavaScript if子句在false时执行

时间:2018-12-07 13:55:18

标签: javascript

这是我的第一篇文章,在此先感谢所有支持。

背景短:

我是一个脚本团队的成员,该团队开发脚本以简化我们的任务。我们正在使用 MySQL数据库,以允许团队选择我们创建的每个功能要使用的功能。数据库和数据检索工作正常。

问题:

即使我们创建的cookie设置为保留布尔值False,但函数始终会执行其保留的if子句。

function tkAlwaysViewAll(snippet) {
    console.log('Viewall: ' + snippet);
    if (snippet) {
            var ticketURL = window.location.href;
            var showAllURL, x;
            x = ticketURL.indexOf('block=');
            // if the string 'block=' does not exist in the URL, it adds the parameter and
            // reloads the ticket to the correct 'view all' URL
            if (x == -1) {
                showAllURL = ticketURL + '&block=15:.a';
                window.location.href = showAllURL;
            } else {
                console.log('Viewall function executed');
            }
    }
} 

仅当snippet的值设置为True时,以上代码才应执行。但是,它始终在执行,而忽略代码段的值。在下面,您看到console.log()的输出,该输出仅用于调试。 第一个console.log()显示代码段变量的值。 仅在重新加载页面后(或当直接使用带有'block'参数的链接,但我们知道并没有使用它时),才会显示第二个console.log()

当代码段为True时:

Viewall: true
Viewall function executed

并且当代码段为False (不应执行该功能)时:

Viewall: false
Viewall function executed

该函数不使用任何全局变量,也不被任何其他事件更改。

此功能在做什么?

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

原因是您将compile group: 'com.github.derjust', name: 'spring-data-dynamodb', version: '5.0.4' String传递给了函数(cookies 总是存储"false" s)。将其放在String条件内部会将if()转换为布尔值。非空字符串在该机制中转换为String

这是Java转换时对非布尔值的作用:

true