var arr = ['abc','xyz'];
$.each(arr, function(i,val){
var val = val; //where I got abc, xyz here
if(some condition){
//run abc function but I don't want to do abc(), possible?
}
});
function abc(){}
function xyz(){}
我可以将字符串(val)转换为可执行函数,而不是硬编码我的函数名称,如abc()。通过这种方式,我可以通过在我的数组中添加值来执行任何功能。
答案 0 :(得分:0)
假设您的功能位于全局范围内,您可以通过window[functionname]()
:
var arr = ['abc','xyz'];
$.each(arr, function(i,val){
window[val]();
});
function abc() {
console.log('In abc()');
}
function xyz(){
console.log('In xyz()');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
不是传入字符串,而是传递对函数本身的引用:
var arr = [abc, xyz];
$.each(arr, function(i, fn) {
if (true) {
fn();
}
});
function abc() {
console.log('abc');
}
function xyz() {
console.log('xyz');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:0)
这两个函数都应该是公共父对象的一部分。因此可以通过其属性名称访问它。
这两者都是window
对象的一部分。
var arr = ['abc', 'xyz'];
$.each(arr, function(i, val) {
if (true) { // some condition.
window[val]();
}
});
function abc() {
console.log('Inside the FN abc');
}
function xyz() {
console.log('Inside the FN xyz');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 3 :(得分:0)
eval(str)将运行字符串str中的代码。您确实需要信任str并确保用户可以访问它。