[問題] 請問可以動態宣告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