在JavaScript中,有一种方法可以像function() { return eval("if (true) { 1 }"); }
返回“1”一样获取语句的“值”;
function() { return if (true) { 1 } }
以及我尝试的所有类似排列都不是有效的语法。
eval
是否有幸拥有特殊权力来确定表达式中语句的“最后”值?
用例是一个REPL,它评估任意表达式并返回结果。 eval有效,但我想把它包装在功能中。
答案 0 :(得分:1)
function(expr) { return eval(expr); }
但是,除了eval
之外,这真的没有做任何事情,所以我猜你必须要在返回之前使用eval
的返回值做事情吗?
E.g:
function custom_eval(expr)
{
var result = eval(expr);
if ((typeof result))=="string")
{
alert("The expression returned a string value of: " + result);
}
if ((typeof result))=="number")
{
alert("The expression returned a number with value: " + result);
}
//and so on and so forth...
return result;
}
var bob = custom_eval("x=\"bob\";x");
alert(bob);
(有关typeof运营商的详情)
答案 1 :(得分:1)
要评估javascript中的任意javascript代码,您有三个选项
答案 2 :(得分:0)
您可以使用 || 来获取第一个值,该值不为null / undefined / 0:
var t = 1 || 'b' || 3 || 'd'; // assigns 1
var t = 0 || null || undefined || 'd'; // assigns d
如果没有首先发现短路null / undefined / 0,您可以使用&& 来获取 last 值:
var t = 1 && 'b' && 3 && 'd'; // assigns d
var t = 0 && null && undefined && 'd'; // assigns 0