为什么eval在nodejs下不起作用?
function show(myVariable) {
var myValue = eval(myVariable);
console.log(myVariable + "=" + myValue);
}
var foo = "bar";
show("foo");
在HTML页面上,它在控制台日志中返回foo=bar
在nodejs控制器中,它提供SyntaxError: Invalid or unexpected token
这是原始代码:
"use strict";
var mongoose = require('mongoose');
function show(myVariable) {
var myValue = eval(myVariable);
console.log(myVariable + "=" + myValue);
}
exports.messageSave = function(req, callback) {
var foo = "bar";
show("foo");
return
// a lot of other code below, but put return to focus on the problem
}
更新
我在这里尝试做的是让我的show
函数读取解析给它的变量的名称。
答案 0 :(得分:1)
您的show
函数不起作用,因为它无权访问foo
定义的范围。它只适用于全局变量,这可能是您在浏览器中尝试过的。
不要做太多欺骗,也不要使用eval
。传递名称和值(show("foo", foo)
)或对象(show({foo})
- ES6属性的简写语法)真的会简单得多。