编程日常

有时候想判断一个js变量或者js函数时候存在,该怎么实现呢?

引发

最近开发一款应用插件,兼容pjax会调用函数加载播放器,但是有时候页面没有音乐就不需要加载播放器,这时候调用函数就会报错。

解决方案

怎么判断函数是否存在,调用这个函数,参数传入函数名存在返回真否则假

     function isExitsFunction(funcName) {try { if (typeof(eval(funcName)) == "function") {return true;} } catch(e) {}  return false;} 

解决问题

看看不是说播放器问题吗,我们需要新建一个函数,pjax调用它,这个新函数判断加载播放器函数时候存在,如果存在就加载,否则就退出。

原理刨析

eval 函数 执行一段js并返回值
typeof 函数 判断类型
try catch 代码块 捕捉错误并防止程序终止

  typeof(eval(funcName)) == "function"

这行代码获取这个函数 判断类型时候为function

eval执行函数名如果存在就会成功(返回类型或者值) 如果失败就会throw error这时候套try
catch语法就可以阻止错误丢出

 catch(e) {}

很显然捕捉了错误
接着执行最后一行

  return false;

js函数不存在

Comment

    1. 乔千 乔千
      Chrome 79

      ヾ (≧∇≦*) ゝ这个音乐插件还在咕咕

This is just a placeholder img.