没有看到这个建议: me.onChange&& me.onChange(STR);
基本上,如果me.onChange未定义(如果它尚未启动它将会是这样),那么它将不会执行后一部分。如果me.onChange是一个函数,它将执行me.onChange(str)。
你甚至可以走得更远:
me && me.onChange && me.onChange(str);
如果我也是异步的。
然后有这个......
( document.exitPointerLock || Function )();
这个简单的jQuery代码应该可以解决这个问题:
if (jQuery.isFunction(functionName)) { functionName(); }
尝试这样的事情:
if (typeof me.onChange !== "undefined") { // safe to use the function }
或更好(根据UpTheCreek赞成评论)
if (typeof me.onChange === "function") { // safe to use the function }
我有这样的情况,函数的名称根据添加到函数名称的变量(在这种情况下为var'x')而变化。这有效:
if ( typeof window['afunction_'+x] === 'function' ) { window['afunction_'+x](); }
function sum(nb1,nb2){ return nb1+nb2; } try{ if(sum() != undefined){/*test if the function is defined before call it*/ sum(3,5); /*once the function is exist you can call it */ } }catch(e){ console.log("function not defined");/*the function is not defined or does not exists*/ }
function js_to_as( str ){ if (me && me.onChange) me.onChange(str); }
如果您使用eval将字符串转换为函数,并且您想检查此eval'd方法是否存在,那么您将需要使用 的 类型 强> 和你的函数字符串 的 EVAL 强> :
var functionString = "nonexsitantFunction" eval("typeof " + functionString) // returns "undefined" or "function"
不要扭转这种情况并尝试一下 的 类型 强> 上 的 EVAL 强> 。如果你做了一个ReferenceError将被抛出:
var functionString = "nonexsitantFunction" typeof(eval(functionString)) // returns ReferenceError: [function] is not defined
我会怀疑的 me 没有正确分配onload。
me
将get_ID调用移动到onclick事件应该处理它。
显然你可以像前面提到的那样进一步陷阱:
function js_to_as( str) { var me = get_ID('jsExample'); if (me && me.onChange) { me.onChange(str); } }
我有这个问题。
if (obj && typeof obj === 'function') { ... }
如果obj碰巧未定义,则不断抛出引用错误。
最后我做了以下几点:
if (typeof obj !== 'undefined' && typeof obj === 'function') { ... }
一位同事向我指出,检查是否是 !== 'undefined' 然后 === 'function' 当然是多余的。
!== 'undefined'
=== 'function'
更简单:
if (typeof obj === 'function') { ... }
更清洁,工作得很好。
function function_exists(function_name) { return eval('typeof ' + function_name) === 'function'; } alert(function_exists('test')); alert(function_exists('function_exists'));
要么
function function_exists(func_name) { // discuss at: http://phpjs.org/functions/function_exists/ // original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // improved by: Steve Clay // improved by: Legaev Andrey // improved by: Brett Zamir (http://brett-zamir.me) // example 1: function_exists('isFinite'); // returns 1: true if (typeof func_name === 'string') { func_name = this.window[func_name]; } return typeof func_name === 'function'; }
我会更进一步,以确保该属性确实是一个功能
function js_to_as( str ){ if (me && me.onChange && typeof me.onChange === 'function') { me.onChange(str); } }
放双重感叹号即!!在要检查的函数名称之前。如果存在,则返回true。
function abc(){ } !!window.abc; // return true !!window.abcd; // return false
对我来说最简单的方法是:
function func_exists(fname) { return (typeof window[fname] === 'function'); }
没有条件
me.onChange=function(){}; function getID( swfID ){ if(navigator.appName.indexOf("Microsoft") != -1){ me = window[swfID]; }else{ me = document[swfID]; } } function js_to_as( str ){ me.onChange(str); }
我总是这样检查:
if(!myFunction){return false;}
只需将它放在使用此功能的任何代码之前
我尝试过接受的答案;然而:
console.log(typeof me.onChange);
返回'undefined'。 我注意到规范声明了一个名为'onchange'而不是'onChange'的事件(请注意camelCase)。
将原来接受的答案更改为以下内容对我有用:
if (typeof me.onchange === "function") { // safe to use the function }
//Simple function that will tell if the function is defined or not function is_function(func) { return typeof window[func] !== 'undefined' && $.isFunction(window[func]); } //usage if (is_function("myFunction") { alert("myFunction defined"); } else { alert("myFunction not defined"); }
如果你正在检查一个jQuery插件的函数,你需要使用$ .fn.myfunction
if (typeof $.fn.mask === 'function') { $('.zip').mask('00000'); }
试试这个:
Window.function_exists=function(function_name,scope){ //Setting default scope of none is provided If(typeof scope === 'undefined') scope=window; //Checking if function name is defined If (typeof function_name === 'undefined') throw new Error('You have to provide an valid function name!'); //The type container var fn= (typeof scope[function_name]); //Function type If(fn === 'function') return true; //Function object type if(fn.indexOf('function')!== false) return true; return false; }
请注意我用手机写的这个 可能包含一些大写问题和/或其他所需的更正,例如函数名称
如果你想要一个像PHP这样的函数来检查是否设置了var:
Window.isset=function (variable_con){ If(typeof variable_con !== 'undefined') return true; return false; }
我喜欢使用这种方法:
function isFunction(functionToCheck) { var getType = {}; return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; }
用法:
if ( isFunction(me.onChange) ) { me.onChange(str); // call the function with params }