Как сделать функцию, которая может преобразовывать любую строку, которая выглядит как код JavaScript в объекты? - PullRequest
3 голосов
/ 02 ноября 2019

Будучи новичком в JavaScript, у меня есть вопрос. Давайте рассмотрим строку, которая выглядит следующим образом:

 var str = "Math.random() > 0.5";

Теперь давайте попробуем javascript:

  console.log( turnUp( str ) ); // true or false

Итак, turnUp () - это просто функция IПредполагается, что может сделать что-то вроде этого:

Без turnUp () :

 console.log( str );
 // Is equivalent to console.log( "Math.random() > 0.5" );

Выход:

 Math.random() > 0.5

С turnUp () :

 console.log( turnUp( str ) );
 // Is equivalent to console.log( Math.random() > 0.5 );

Вывод:

 true

Или

Вывод:

 false

Итак, с помощью примеров, вы можете понять, что мне нужно! Итак, как сделать функцию turnUp () ?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 04 ноября 2019

eval () имеет много недостатков, поэтому я предпочитаю, чтобы вы сделали что-то вроде этого:

 var turnUp = function(str) {
    return Function('"use strict";return (' + str + ')')();
  }

Теперь вы можете сделать:

 var str = "Math.random() > 0.5";

 console.log( str ); // => Math.random > 0.5
 console.log( turnUp( str ) ); // => true or false
0 голосов
/ 02 ноября 2019

Для строки:
Используйте eval(new string ()), чтобы эта строка запускалась как строка без фрагмента кода. Добавьте это в свою функцию turnup().

console.log(eval('str'));

Для логического значения:

console.log(str);
0 голосов
/ 02 ноября 2019

В javascript есть eval, который может помочь вам в том, что вы пытаетесь сделать, но у него есть свой недостаток. В качестве альтернативы вы можете использовать New Function()

let str = "Math.random() > 0.5";

let turnUp = new Function('str', `return ${str}`)

console.log(str)
console.log(turnUp(str))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...