[问题] 请问可以动态宣告Function吗?

楼主: sivle01 (好耶,好运还没走!)   2017-01-13 19:04:44
例如:
var elements = ["FunctionA","FunctionB","FunctionC"];
$.each(elements, function(i, e) {
var elements[i] = new Function("a", "b", "return a * b");
});
$(function(){
var a = FunctionA(1,1);
var b = FunctionB(1,1);
var c = FunctionC(1,1);
console.log(a);
console.log(b);
console.log(c);
});
请问这有可能做到吗?
先谢谢大大回答。
作者: ATPS4869 (ATPS4869)   2017-01-13 19:55:00
search: eval
作者: mrbigmouth (大嘴先生)   2017-01-13 20:47:00
不需要eval也能做到 就一般宣告配合scope即可真的没办法用with也比用eval好但我看不懂你到底想要做啥 所以没办法帮你改
作者: dannypsnl (秦书)   2017-01-13 21:32:00
with不是拿掉了?
作者: mrbigmouth (大嘴先生)   2017-01-16 19:53:00
还是可以用吧 只是跟eval一样都是建议不要用事实上我也没遇过非得用eval/with处理的问题 当没有最好
作者: fiorentino (眠)   2017-02-01 11:56:00
可以研究一下AngularJs怎么做到DI,也许可以解决你的问题
作者: Hevak (Arthow Eshes)   2017-02-04 23:18:00
window.FunctionA = function (a, b) { return a*b; };所以:$.each(elements, function (i, e) {window[e] = function (a, b) {return a*b;};}因为你平常直接宣告function或变量的scope是在global下,nodejs下是global,浏览器下是window所以要达到一样的效果就是把东西指派到global(window)下

Links booklink

Contact Us: admin [ a t ] ucptt.com