eval 返回 undefined,浏览器返回一个结果
eval returning undefined, browser returning a result
我有一个 javascript 字符串,如下所示:
"h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o")
如果我将字符串保存到一个变量并对其求值,它return未定义:
var str = "h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o");
var x = eval (str);
console.log(x) // undefined
但是,如果我将字符串粘贴到 Chrome JS 控制台,它 return 如预期的那样:
"hello"
为什么 eval 会 return 未定义,JS 控制台是如何完成这项壮举的?
谢谢!
表达式 "h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o")
的计算结果为字符串 "hello"
。
如果您将其粘贴到 Chrome 控制台,那么您将得到它评估显示的内容。
如果将它传递给 eval
,则表达式的计算结果为字符串 "hello"
,然后 eval 获取该字符串并计算为 变量名 hello
未定义。
如果你只是想把"hello"
变成一个变量,那么不要使用eval
,使用赋值。
var x = "h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o");
console.log(x);
当您将字符串粘贴到控制台时,它会立即评估您定义的操作,从而获得正确的
"hello"
结果。但是,当您转到 eval 时,您应该看到 "ReferenceError: hello is not defined." 这是因为字符串操作再次被立即解析,因此您对 eval 的调用变为
eval('hello')
没有意义。
我有一个 javascript 字符串,如下所示:
"h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o")
如果我将字符串保存到一个变量并对其求值,它return未定义:
var str = "h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o");
var x = eval (str);
console.log(x) // undefined
但是,如果我将字符串粘贴到 Chrome JS 控制台,它 return 如预期的那样:
"hello"
为什么 eval 会 return 未定义,JS 控制台是如何完成这项壮举的?
谢谢!
表达式 "h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o")
的计算结果为字符串 "hello"
。
如果您将其粘贴到 Chrome 控制台,那么您将得到它评估显示的内容。
如果将它传递给 eval
,则表达式的计算结果为字符串 "hello"
,然后 eval 获取该字符串并计算为 变量名 hello
未定义。
如果你只是想把"hello"
变成一个变量,那么不要使用eval
,使用赋值。
var x = "h" + "e" + "l" + ("foo", "bar", "l") + ("abc", "def", "o");
console.log(x);
当您将字符串粘贴到控制台时,它会立即评估您定义的操作,从而获得正确的
"hello"
结果。但是,当您转到 eval 时,您应该看到 "ReferenceError: hello is not defined." 这是因为字符串操作再次被立即解析,因此您对 eval 的调用变为
eval('hello')
没有意义。