gpt4 book ai didi

JavaScript:消除三个 JSHint 错误

转载 作者:行者123 更新时间:2023-12-02 19:05:40 25 4
gpt4 key购买 nike

请在下面找到我的 Node.JS 服务器代码片段:

// Define the user API
var API = {
list: 'private',
login: 'public',
logout: 'private',
add: 'admin',
remove: 'admin',
edit: 'admin'
};

// Attach API handlers
for(var label in API) {
var denied = 'Permission denied';

var wrapper = (function (label) {
return function (req, res) {
var permission = API[label];

if(!req.session) {
if(permission !== 'public') {
res.send(denied);
return;
}
} else if((permission === 'admin') && (req.session.rights !== 'Administrator')) {
res.send(denied);
return;
}

eval(label + '(req, res)');
};
}(label));

server.post('/user/' + label, wrapper);
}

基本上,我为 API 中的每个属性都有一个 API 处理程序,并以编程方式附加这些处理程序,并根据需要处理权限。然而 JSHint 确实不喜欢这样。我收到三个错误:

Line 29: eval(label + '(req, res)');
eval is evil.

Line 31: }(label));
Don't make functions within a loop.

Line 12: for(var label in API) {
The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.

如何改进这段代码才能让 JSHint 满意?您是否建议对代码进行其他更改?

最佳答案

我建议仔细检查使 jslint 不那么严格的选项并进行设置(前提是您了解原因)。 Jslint 非常严格,这就是为什么它有选项可以降低其严格性。重要的是您知道为什么他们被标记以及为什么您可以允许这些事情。

例如允许使用 eval:

/*jslint evil: true */

一些用途:

/*jslint plusplus: true */

因为他们发现++ 和 -- 不会导致错误产生或可读性出现问题。

jslint 用于提醒人们注意潜在的陷阱。如果你理解它们,你就可以绕过它们。

关于JavaScript:消除三个 JSHint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342831/

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