Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка вырожений (https://javascript.ru/forum/misc/78424-proverka-vyrozhenijj.html)

AndreyOd 12.09.2019 16:35

Проверка вырожений
 
Привет!не могу понять задание,
Нужно проверить правильное ли это выражение или нет.
Input:"+sd3-sd";
:true;
Input:"c+=asd"
Output:false


:help: :help:

weirdjava 12.09.2019 16:43

мда,странное задание.попробуй типо

a = 1;
b = undefined;
alert( !!a );
alert( !!b );

AndreyOd 12.09.2019 16:59

:blink: :blink: :blink:

weirdjava 12.09.2019 18:18

друг,по другому не знаю как.Условие странное .Если б знал,помог

Dilettante_Pro 12.09.2019 18:35

var a, b;

function test(str) {
   try {  
      eval(str);
      return true;
   }
   catch(e) {
     return false;
   }
}

alert(test("b+=++a"));
alert(test("++a+==4++b-"));

Alexandroppolus 13.09.2019 10:30

eval не подходит, код может быть синтаксически правильным, но свалиться при выполнении. И переменные там могут быть любые.

Надо через new Function

var str = "b+=+a++++++";
try { new Function(str); alert(" ok"); } catch(e) { alert("error"); }

Dilettante_Pro 13.09.2019 16:16

Цитата:

Сообщение от Alexandroppolus
код может быть синтаксически правильным, но свалиться при выполнении

Пример можно?

Alexandroppolus 13.09.2019 19:54

Dilettante_Pro,

eval('throw 1')
eval('a()')

и т.д.

автор не указал, какие там у него выражения могут быть.
но даже если там обычная арифметика и присваивания, то всё равно упремся в проблему неопределенных переменных.


Часовой пояс GMT +3, время: 11:53.