javascript 判断函数或变量是否已定义的方法

山水山水,有山有水才是好风光。夜色越来越浓了,村落啦,树林子啦,坑洼啦,沟渠啦,好象一下子全都掉进了神秘的沉寂里。

如果多人合作开发一个JS项目的话,有时为了代码能够更好的执行少不了要判断一些 js 函数或 js 的变量是否存在。如果存在可以直接调用,如果不存在就需要定义了。那么下面这篇博文,飞鸟慕鱼就来和大家说一说 js 中如何判断函数与变量是否存在的方法。

js判断函数是否存在的方法

js判断函数是否存在,可以通过typeof来判断,通过判断eval(函数名)这个类型是否是function即可。

js代码:

<script>
//判断 FunName 为函数名称    
if (typeof eval(funcName) === "function") { 
    alert("is function");
} else { //不是函数
    alert("not is function");
}
</script>

一般情况下都是结合 try catch 块来判断该函数是否存在,如下面的代码

js代码:

<script>
try {
    if (typeof eval(funcName) === "function") { //是函数    其中 FunName 为函数名称
        alert("is function");
    } else { //不是函数
        alert("not is function");
    }
} catch (e) { 
   console.log("-------我异常了........");
}
</script>

js判断变量是否存在的方法

js判断变量是否存在,使用 typeof(变量名) == "undefined" 即可!

js代码:

<script>
// a 变量名,这里未定义
if (typeof(a) == "undefined") {
    alert("a is undefined")
} else {
    alert("a is defiend")
}
</script>

注:如果定义了变量,但没有赋值,上面的代码也会判断为变量不存在,可以参考下面的代码。

js代码:

<script>
// a 定义了变量,但未赋值,其值为 undefined
var a;
if (typeof(a) == "undefined") {
    alert("a is undefined")
} else {
    alert("a is defiend")
}
</script>

运行结果为:

a is undefined

我们推荐结合 try catch 块来使用上面的代码:

js代码:

try {
    if (typeof (a) == "undefined") {
        alert("a is undefined")
    } else {
        alert("a is defiend")
    }
} catch (e) {
    console.log('我异常了');
}

PS:

如果大量使用JS判断变量或函数是否存在的代码,我们建议把上面的代码封装成一个函数来调用。

JS代码示例:

<script>
//判断变量是否存在
function is_variable(variableName){
    try {
        if (typeof (variableName) == "undefined") {
            return false;
        } else {
            return true;
        }
    } catch (e) {
        console.log('我异常了');
    }
    return false;
}
//判断函数是否存在
function is_function(functionName){
    try {
        if (typeof eval(functionName) === "function") { 
            return true;
        } else { 
            return false;
        }
    } catch (e) {
        console.log("-------我异常了........");
    }
    return false;
}
</script>

本文javascript 判断函数或变量是否已定义的方法到此结束。相信别人,放弃自己,这是许多人失败人生的开始。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
JS获取鼠标点击时的位置

JS获取URL参数

Ajax跨域问题及解决方案(jsonp,cors)

ajax动态加载json数据并详细解析

ajax从JSP传递对象数组到后台的方法