如何检查返回变量是否是函数?
var testController = function() {
alert('123');
}
$(function() {
$('[mfour]').each(function(e, t) {
var a = $(t).attr('mfour');
console.log($.isFunction(testController));
console.log($.isFunction(a));
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div mfour="testController">asd</div>
请注意,首先 console.log
当函数名称在第二个 console.log
上被硬编码时,返回 TRUE如果正在评估变量,则返回 FALSE。
这有点奇怪,因为 var a
返回testController
.
这是jsFiddle .
我的目标是基于 mfour 属性运行某些函数。所以在上面的例子中,testController将运行testController函数。
最佳答案
在您的示例中,要获取对 testFunction
的引用(如果它在范围内),您可以使用 eval
。是的,我说过了,eval
,所以您必须知道,如果您不对函数名称进行清理,则用户可能会操纵该字符串来运行恶意代码;
var testController = function() {
alert('123');
}
$(function() {
$('[mfour]').each(function(e, t) {
var a = eval($(t).attr('mfour'));
console.log($.isFunction(testController));
console.log($.isFunction(a));
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div mfour="testController">Hello</div>
关于javascript - JQuery 检查变量是否是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32588319/