جافاسكريبت - إنشاء دالة جافا سكريبت من سلسلة نصية بدون eval و new Function()


هل هناك أي حل بديل لإنشاء دالة جافا سكريبت من متغير نصي، باستثناء eval() وFunction constructor، حيث لا يُسمح لي باستخدام هاتين الطريقتين لأسباب أمنية.

أنا أعرف الحل عندما تقوم بإنشاء عنصر DOM باستخدام كود جافاسكريبت وإضافته إلى الصفحة، لكنه بالتأكيد اختراق فوضوي. شكراً جزيلاً للمساعدة.

====

أضف

لقد تلقيت بيانات بصيغة json تحتوي على سلاسل مثل "a === b"، "!a"، "(a && b) || c" وهكذا... (مئات من التركيبات). أحتاج إلى إنشاء دالة وإرجاعها يمكنها أداء وظيفة المقارنة هذه.

شيء

var test = function ('a === b') {
  //some code without eval and new Function()
}
// in console
test('aa', 'bb') // return false

الإجابة رقم 1

شكراً لكم جميعاً على الإجابات الممتعة.

لذلك، قد قرأت وحاولت استخدام جميع الطرق التي اقترحتها عليّ. كل منها يستخدم eval() حتى لو لم يكن من المفترض أن تستخدم eval في الكود الخاص بك. في مشروعي، حليت المشكلة باستخدام WebWorkers. هذه التقنية لها الكثير من الفوائد، يرجى قراءة المقال في MDN https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

لكن، علي أن أستخدم "وظيفة جديدة" لهذه الطريقة.

إذن الإجابة الصحيحة هي:

لا يمكنك إنشاء دالة من نص دون استخدام eval و new Function().

الطريقة الوحيدة هي كتابة محلل بسيط خاص بك لذلك.

شكرًا @brianxautumn