2013-06-06 2 views
0

Я знаю, что могу просто использовать оператор if else для выполнения математики для меня и даже создать функцию, которая может быть вызвана в любом случае в зависимости от необходимости, но я пытаюсь на основе математики просто хранить либо +, либо - в качестве переменной, поэтому он может выполнитьв javascript можно назначить арифметический операнд переменной?

, например

plusOrMinus = + 

5 + plusOrMinus + 5 = 10 
+0

Ну да, и вы можете использовать 'Eval() «но это довольно опасно. –

+0

@Mahan Я бы хотел увидеть пример с 'eval()' и услышать аргументы в пользу того, почему он «опасен» – Ian

+0

Я слышал, как люди говорят, что eval() опасен, но я знаю, что люди могут встроить редактирование javascript с современными браузерами; и что-то еще, я просто не вижу никакой опасности, кроме того, что кто-то вводит что-то в свой конкретный браузер. –

ответ

3

Я не уверен, в какой ситуации вы находитесь, но не умножился бы на 1 или -1?

plusOrMinus = 1 
5 + (plusOrminus * 5) = 10 

plusOrMinus = -1 
5 + (plusOrminus * 5) = 0 
+1

Мне кажется, что '5 - 5 = 0', а не' -10'. – RobG

2

Нет, но можно создать функцию, которая облегает данного оператора (ов):

function add(a, b) { return a + b }; 
function sub(a, b) { return a - b }; 

var op = add; // look, functions are just objects! 
op(5, 5) // -> 10 
var op = sub; 
op(7, 3) // -> 4 

Ну, как это помогает нам? Просто расширьте его!

function fold (arr, fn) { 
    var r = arr[0]; 
    for (var i = 1; i < arr.length - 1; i++) { 
     r = fn(r, arr[i]); 
    } 
    return r; 
} 
fold([1,2,3], add) // -> 6 
1

Вы можете хранить 1 или -1, и умножать, как это:

var plusOrMinus; 
var Result; 

plusOrMinus = 1; 

Result = (5 + 5) * plusOrMinus; // 10 

plusOrMinus = -1; 

Result = (5 + 5) * plusOrMinus; // -10 
1

Вы, вероятно, нужно Eval()

plusOrMinus = '+' 

eval(5+plusorMinus+5); 
Смежные вопросы