gpt4 book ai didi

javascript - 如何用连字符定义 javascript 变量?

转载 作者:行者123 更新时间:2023-11-30 20:16:44 24 4
gpt4 key购买 nike

我需要评估一个字符串,例如 employee-count = 3,其中我有一个对象,其中包含可以引用的潜在变量。当变量名有效时,我没有问题,但是对于 employee-count 之类的东西,我有点难过。

这是我的普通变量名示例:

function evalWithObject(expression, object) {
_.each(object, (value, key) => {
eval(`var ${key} = value`);
});

return eval(expression.replace('=', '==='));
}

有什么方法可以在当前范围内使用对象表示法定义变量吗?例如,我可以毫无问题地执行 object['employee-count'] = true

有什么想法吗?

最佳答案

如您所知,您不能在变量名中使用连字符,但可能有一个潜在的解决方法是替换键(例如,我将连字符替换为下划线)并在全局范围内使用 eval。

// if you want to create variable in global space, indirect eval call
var geval = window.execScript || eval;
function evalWithObject(expression, object) {
for (var key in object) {
if (object.hasOwnProperty(key)) {
value = object[key];
key = key.replace('-', '_');
geval('var ' + key + ' = ' + value);
// OR
// eval.call(null, 'var ' + key + ' = ' + value)
}
}
return geval(expression.replace('=', '==='));
// OR
// return eval.call(null, expression.replace('=', '==='));
}

// you need to control your expession though, replace key employee-count to employee_count
evalWithObject("employee_count = 5 ? console.log('Yes') : console.log('No') " , {"employee-count": 5});

// log variable
console.log(window['employee_count']);

关于javascript - 如何用连字符定义 javascript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51852397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com