Что Вы делаете здесь, на курсах для новичков?
ну эцсамое, я как бы сам новичок
после того, как нашел оператор switch, оптимальным видится такое решение:
var calculate = function ( firstNumber, secondNumber, operator) {
switch (operator) {
case ‘+’ : return (parseInt(firstNumber, 10)+parseInt(secondNumber, 10));
case ‘-’ : return (parseInt(firstNumber, 10)-parseInt(secondNumber, 10));
case ‘*’ : return (parseInt(firstNumber, 10)*parseInt(secondNumber, 10));
case ‘/’ : return (parseInt(firstNumber, 10)/parseInt(secondNumber, 10));
}
}
А зачем скобки после return?
У вас наверное самое простое.Но всё же для меня не очень понятно.
switch (operator) {
case ‘+’ ______; break; Заменяет if, как я поняла.
Следующие
case ‘+’ ______; break; заменяют else if и т.д. если я правильно поняла?
Но почему то если я ставлю if, то чего у меня нитого выходит, ошибки какие то. var calculate = function(firstNumber, secondNumber, operator) {
var num1 = +firstNumber;
var num2 = +secondNumber;
if(’+’){
num1 += num2;
};
else if(’-’){
num1 -= num2;
};
else if(’*’){
num1 *= num2;
};
else(’/’){
num1 /= num2;
};
return num1;
};
4 точки с запятой лишние
просто else не нужен, только else if
не задействован operator - где он у вас в теле функции?
если придираться - зачем вводите новые переменные? модифицируйте имеющиеся 3
Поправил ваше, открывать в случае отчаяния
var calculate = function(firstNumber, secondNumber, operator) {
if (operator == '+') {
firstNumber = +firstNumber + +secondNumber;
} else if (operator == '-') {
firstNumber -= secondNumber;
} else if (operator == '*') {
firstNumber *= secondNumber;
} else if (operator == '/') {
firstNumber /= secondNumber;
}
return firstNumber;
};
самые короткие опасные решения:
раз
function calculate(x, y, o) {
return (new Function('return ' + x + o + y))();
}
два
const calculate = (x, y, o) => eval( x + o + y );
Спасибо, короткие конечно прикольные, но неясные, мы же таких символов и так составлять с такими командами ещё не учились, нам это ещё не знакомо. Было бы неплохо если бы в курсах разъясняли значения этих команд, но там такого нет. Ясно будет тем кто до этого касался и изучал ранее, как я поняла, здесь таких много. Но возьму на заметку, возможно в других справочниках и пособиях найду их понятия, что и что обозначает.
тут на курсах вряд ли будут про это рассказывать вообще. eval вообще как огня боятся (на это есть причины). тут многое не рассказывают что вообще-то стоило бы (но тогда на интенсив никто не пойдет).
я не уверен, что на курсах когда-то про прототипирование вообще расскажут, которое в основе всего и дает целостную картинку понимания что вообще происходит тут, откуда методы берутся, как определяется this и пр. про промисы вообще молчу.
Что-то не совсем вас поняла, почему бояться и не пойдут на курсы если его ввести?
При просмотре других решений, видела что ими многие пользуются (имею в виду не именно eval, а вообще в целом другими неизученными командами).
И разве на курсах не должны пояснять именно основу? И есть ли где можно было почитать более подробно и чтобы для новичков ясно излагалась про это? Про html нашла сайты, в которых можно более менее понять и хорошие шпаргалки, а вот с явоскриптом, есть конечно сайты, но для новичков трудновато воспринимается, хотелось бы более подробно и по шагам.
Ну js сложноватый язык. Лучше изучить для начала типизированный язык, даже Бейсик подойдет
Ну или книжку Моргана “js для самых маленьких”
вместо ParseInt можно Number(firstNumber) было лучше использовать -
сделал через Мапу(словарь)
const Operators = {
'+': (a, b) => a + b,
'-': (a, b) => a - b,
'*': (a, b) => a * b,
'/': (a, b) => a / b,
};
const calculate = (firstNumber, secondNumber, operator) => {
firstNumber = parseInt(firstNumber, 10);
secondNumber = parseInt(secondNumber, 10);
const result = Operators[operator](firstNumber, secondNumber);
return result;
};
P.S - я сначала через find искал нужный оператор - так тоже можно)
мне больше нравится вот так приводить к числу: +str
это хак…ты любишь хаки)
это унарный плюс! (у него даже свой приоритет есть в стандарте: п. 12.5.6)
это классика, это знать надо! ©
инкремент тоже хак? =)
Встретились как-то два js-ра
Просто не очевидные особенности конкретно языка js никогда не любил
////
Поэтому лучше явное чем не явное)
ничего особенного, просто это мой кодстайл)
Ольга, js - ра, ? - что это?
Джеэсера
ахах) вот оно что)