Захват переменных функцией
Здравствуйте, у меня есть код:
var funcNameArray = ["sin", "cos", "tan", "asin", "acos", "atan", "atan2", "cot", "sec", "csc"]; //Create shell for (var i in funcNameArray) { var funcName = funcNameArray[i], obj = {}; var func = math[funcName]; obj[funcName] = function (x) { return func(GetRadAngle(x)); }; math.import(obj, { override: true }); }; Он последовательно переопределяет математические функции в мат библиотеке math.js(может это поможет). И вся проблема в том, что все функции в результате указывают на одну анонимную, а она в свою очередь использует func, которая как я понял оказалась одна на всех. Как это можно исправить? |
Что требуется? Ничего не понял :)
Зачем переопределять все функции? |
|
Цитата:
Правда я видимо чего-то все же не понял, раз результат получился такой же: var funcNameArray = ["sin", "cos", "tan", "asin", "acos", "atan", "atan2", "cot", "sec", "csc"]; //Create shell for (var i in funcNameArray) { var funcName = funcNameArray[i], obj = {}; var func = math[funcName]; obj[funcName] = function (x) { return (function () { return func(GetRadAngle(x)); })(x); }; math.import(obj, { override: true }); }; |
Цитата:
|
for (var i in funcNameArray) { var funcName = funcNameArray[i], obj = {}; obj[funcName] = function () { var func = math[funcName]; return function (x) { return func(GetRadAngle(x)); }; }(); math.import(obj, { override: true }); }; но лучше так funcNameArray.forEach(function (funcName) { var obj = {}; obj[funcName] = function (x) { return math[funcName](GetRadAngle(x)); }; math.import(obj, { override: true }); }); |
Спасибо, работает!
|
Часовой пояс GMT +3, время: 13:30. |