将 javascript eval 方法更改为另一个解决方案
Changing javascript eval method to another solution
我试图摆脱丑陋的 javscript eval 方法(因为我们都知道它是不安全的)。
我有以下问题。我构建了一个动态搜索字符串。
取决于用户决定搜索的 TLD。
这是我的代码:
if (tld == 0) {
var searchString = 'value.tld != ""';
}
if (tld == 1) {
var searchString = 'value.tld == "de"';
}
if (tld == 2) {
var searchString = 'value.tld == "com" || value.tld == "net" || value.tld == "org" || value.tld == "info" || value.tld == "biz"';
}
if (tld == 3) {
var searchString = 'value.tld == "io"';
}
根据搜索参数 'searchstring',我用 eval 构建了这个例程:
if (eval(searchString)) {
// Do something special, depends on the tld variable
}
如何在不使用 'eval' 的情况下重建它。前提是,代码的第一部分未被改动。
提前致谢
尼克
怎么样:
let choices = {
1: ['de'],
2: ['com', 'net', 'org', 'info', 'biz'],
3: ['io']
};
function check(tldparam) {
if (tld === 0) {
return value.tld !== "";
} else {
return tld === tldparam && choices[tldparam].includes(value.tld);
}
}
我们测试它是这样的:
// Got this value from somewhere
let tld = 2;
let value = {tld: 'net'};
// This is my checking criterion
let tldparam = 2;
if (check(tldparam)) {
// Do something special, depends on the tld variable
}
它是否符合您的目的?
我试图摆脱丑陋的 javscript eval 方法(因为我们都知道它是不安全的)。 我有以下问题。我构建了一个动态搜索字符串。 取决于用户决定搜索的 TLD。
这是我的代码:
if (tld == 0) {
var searchString = 'value.tld != ""';
}
if (tld == 1) {
var searchString = 'value.tld == "de"';
}
if (tld == 2) {
var searchString = 'value.tld == "com" || value.tld == "net" || value.tld == "org" || value.tld == "info" || value.tld == "biz"';
}
if (tld == 3) {
var searchString = 'value.tld == "io"';
}
根据搜索参数 'searchstring',我用 eval 构建了这个例程:
if (eval(searchString)) {
// Do something special, depends on the tld variable
}
如何在不使用 'eval' 的情况下重建它。前提是,代码的第一部分未被改动。
提前致谢
尼克
怎么样:
let choices = {
1: ['de'],
2: ['com', 'net', 'org', 'info', 'biz'],
3: ['io']
};
function check(tldparam) {
if (tld === 0) {
return value.tld !== "";
} else {
return tld === tldparam && choices[tldparam].includes(value.tld);
}
}
我们测试它是这样的:
// Got this value from somewhere
let tld = 2;
let value = {tld: 'net'};
// This is my checking criterion
let tldparam = 2;
if (check(tldparam)) {
// Do something special, depends on the tld variable
}
它是否符合您的目的?