Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查参数是否传递给Java脚本函数_Javascript - Fatal编程技术网

Javascript 检查参数是否传递给Java脚本函数

Javascript 检查参数是否传递给Java脚本函数,javascript,Javascript,调用JS函数 alertStatement() 函数定义 function alertStatement(link) { if (link) { alert('A'); } if (link!=null) { alert('B'); } } 这两条语句在WindowsEnv和Tomcat中都可以正常工作,但没有一条在生产环境(Linux服务器)上执行。有没有其他方法来比较变量以使其工作 我使用下面的j

调用JS函数

alertStatement()
函数定义

function alertStatement(link) {
    if (link) {
        alert('A');     
    }

    if (link!=null) {
        alert('B');     
    }   
}
这两条语句在WindowsEnv和Tomcat中都可以正常工作,但没有一条在生产环境(Linux服务器)上执行。有没有其他方法来比较变量以使其工作

我使用下面的javascript代码实现了它

function alertStatement(link) {
    if (link!==undefined){
        alert('A');     
    }
}

因此,undefined终于对我起作用了,由于某种原因,空比较不起作用。要查看参数是否有可用值,只需检查参数是否未定义。这有两个目的。它不仅检查是否传递了某个内容,还检查该内容是否具有可用值:

function alertStatement(link) {
    if (link !== undefined) {
        // argument passed and not undefined
    } else {
        // argument not passed or undefined
    }
}
有些人喜欢这样使用typeof:

function alertStatement(link) {
    if (typeof link !== "undefined") {
        // argument passed and not undefined
    } else {
        // argument not passed or undefined
    }
}
null
是一个特定值<代码>未定义是未通过时的状态

如果您只想知道是否传递了任何内容,而不关心其值是什么,那么可以使用
参数.length

function alertStatement(link) {
    if (arguments.length) {
        // argument passed
    } else {
        // argument not passed
    }
}

你看到什么症状让你觉得有问题?你能定义“工作正常”吗?您希望发生什么?很抱歉造成混淆,当我在没有参数的情况下在windows上调用函数时,两个警报语句都不会弹出。在Linux中,我可以看到两个警报框都弹出。除非您使用Node.js之类的东西,否则js是客户端。服务器运行的是一个red herring.outis:是的,这是一个有效的点,但我没有使用node.js。我使用了警报(链接)来查看使用参数(如alertstatement())进行调用时出现的值,我得到的结果是带有“undefined”的警报框因此,我将其与未定义的参数进行比较,后者最终起作用。length==0表示未传递参数。当通过
alertStatement(null)
alertStatement(undefined)
调用时,当前代码将执行第一个分支,因为
null==undefined
@Mike-您试图解决的问题是什么,我的解决方案没有解决?我不明白为什么要投否决票。我正在测试link参数是否以合法值传递。对于OP的特定情况,
参数。length
可以正常工作,但这是一个更通用的解决方案,可以测试任何特定参数是否具有良好的值,并且如果您或其他编码人员稍后添加参数,则不需要维护。这也可以正常工作,所以我仍然不确定为什么downvote.val!==空也可以工作