eval
'un metninizi bir ifade olarak doğrudan ayrıştırmayacağını unutmayın. {}
bir nesne başlatıcı ifadesi olarak, bir blok olarak ayrıştırılır, çünkü bu
eval('{}'); // undefined
.
Bir parantez içinde iç içe geçme gibi bir ifade olarak veya return
ifadesiyle onu ayrıştırmaya zorlamanın birkaç yolu vardır. Bu yüzden
function evalExpr(expr) {
Function("return " + expr + ";");
return eval("(" + expr + ")");
}
console.log(evalExpr('{}')); // Object {}
try { evalExpr('1),(2') } catch(err) { console.error(err); } // SyntaxError
try { evalExpr('1;2') } catch(err) { console.error(err); } // SyntaxError
eval("(" + expr + ")")
bir ifadesi olarak değerlendirir ve ifade sarma parantez kaçmak için geçersiz )
içermediğini önceden Function("return " + expr + ";")
denetler kullanmak.
['eval'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/eval) bunu yapar, ya da büyük olasılıkla' İşlev 'eşdeğeridir. – Xotic750
evet .. ama bu işe yaramayacak "evet" == "evet" ' –
Bunu neden yapmanız gerekiyor? – Xotic750