javascript - Lag js-funksjon fra streng uten eval og new Function()
Finnes det noen alternativ løsning for å lage en js-funksjon fra en strengvariabel, bortsett fra eval() og Function constructor? Jeg har ikke lov til å bruke noen av disse metodene av sikkerhetsgrunner.
Jeg kjenner løsningen når du oppretter et DOM-element med JS-kode og legger det til på siden, men det er absolutt en skitten hack. Tusen takk for hjelpen.
====
LEGG TIL
Jeg mottok JSON-data med strenger som "a === b", "!a", "(a && b) || c" og så videre... (hundrevis av kombinasjoner). Trenger å lage og returnere en funksjon som kan utføre denne sammenligningsfunksjonen.
Noe
var test = function ('a === b') {
//some code without eval and new Function()
}
// in console
test('aa', 'bb') // return false
Svar #1
Takk til dere alle for interessante svar.
Så, jeg hadde lest og prøvd å bruke alle metodene som du foreslo til meg. Alle av dem bruker eval() selv om du ikke vil bruke eval i koden din. I prosjektet mitt løste jeg problemet ved å bruke WebWorkers. Denne teknologien har mange fordeler, vennligst les artikkelen på MDN https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
Men, jeg må bruke "new Function" for denne metoden.
Så riktig svar er:
Du kan ikke lage en funksjon fra en streng uten eval og ny Funksjon().
Den eneste måten er å skrive din egen enkle parser for det.
Takk @brianxautumn