Kentavr16, есть выражение 3(8-6), в гугле и калькуляторах оно приводится к 3*(8-6), но как посчитать это на яваскрипте если пользователь, допустим, ввёл это в инпуте или даже просто ввести 3(8-6) в консоли?
в языке javascript есть правила приоритета операторов (их около 20),
* - + = += -= , -это всё операторы,
дальше всё, как в математике обычной,
если у Вас много одинаковых плюс минус плюс, они имеют одинаковый приоритет и вычисляются слева направо,
Вы можете написать простую чистую функцию,
например:
const myfunction = (a,b,c) => {
return a*(b-c);
};
const answer = myfunction(3,8,6);
console.log(answer);
formasters777, речь не о приоритетах, а о том, как на яваскрипт в консоли выполнить выражение 3(8-6)? 3*(8-6) он прекрасно считает, а вот 3(8-6) закономерно считает функцией, а не математически выражением.
Kentavr16, тут даже Number(3(8-6)) не поможет. То есть для всех теоретически числовых инпутов надо подключать mathjs.org и обрабатывать через math.evaluate. А яваскрипт сам не умеет считать простейшие математические выражения.
Алекс Арт, Джаваскрипт отлично считает выражения, просто их надо правильно записывать. У каждого языка свои нормы. И любую задачу можно решить родными средствами джС. В данном конкретном случае я бы просто нашел все вхождения в строку символа ( , и если перед ним идет цифра - добавил бы *, результат посчитал. Даже зайца можно научить курить, вопрос зачем. Не совсем понятен контекст вопроса, где это конкретно может пригодиться. знал бы может ответил бы лучше. А на язык спихивать. . .
в каких случаях твоё выражение может не совпадать с джаваскриптовым? Кроме пропущенной звездочки рядом со скобкой что ещё может быть? Надо выяснить все такие сокращения и поправить регексом
Алекс Арт, вычисление то может и простое, но оно написано не на языке js. поэтому тебе нужно превратить свою строку в js выражение. в примере твоем не хватает символа"*". вот ты можешь сам придумать функцию, которая будет тыкать нужные операторы в нужные места, либо искать библиотеки, которые это умеют делать.
ну либо забить и заставлять пользователя нормально писать со всеми нужными знаками для js