我应该如何彻底检查JavaScript中可能的错误?
我很难理解我通常应该在多大程度上检查和验证我在代码中操作的数据。这里我甚至没有说用户输入数据,我只是说我自己的数据,我知道的数据结构。例如,我可能有如下一些基本功能:我应该如何彻底检查JavaScript中可能的错误?,javascript,validation,error-handling,Javascript,Validation,Error Handling,我很难理解我通常应该在多大程度上检查和验证我在代码中操作的数据。这里我甚至没有说用户输入数据,我只是说我自己的数据,我知道的数据结构。例如,我可能有如下一些基本功能: let someData = [object]; someFunction(newData) { let newSet = newData.frequency[0]; someData.dataset.chart.data[0].frequency = newSet; } let someData = [object]
let someData = [object];
someFunction(newData) {
let newSet = newData.frequency[0];
someData.dataset.chart.data[0].frequency = newSet;
}
let someData = [object];
someFunction(newData) {
let newSet = typeof newData === "object" &&
newData.frequency ?
newData.frequency[0] : undefined;
let oldSet = typeof someData === "object" &&
someData.dataset &&
someData.dataset.chart &&
someData.dataset.chart.data &&
someData.dataset.chart.data[0] ?
someData.dataset.chart.data[0].frequency : undefined;
// Since using length on undefined will lead to an error, I've to check the type too
if (Array.isArray(newSet) && newSet.length === 5 && oldSet) {
oldSet = newSet;
} else {
throw Error("Dataset update has failed.");
}
}
假设我有一个图表使用的数据变量,然后我还有一个函数,它用一个新的数据更新图表数据。新数据来自我的数据库(当用户调整过滤器并应用它们时),someData是默认的,每个人都可以看到的初始数据。现在,我的问题是。。。我预见到以下事件:
let someData = [object];
someFunction(newData) {
let newSet = newData.frequency[0];
someData.dataset.chart.data[0].frequency = newSet;
}
let someData = [object];
someFunction(newData) {
let newSet = typeof newData === "object" &&
newData.frequency ?
newData.frequency[0] : undefined;
let oldSet = typeof someData === "object" &&
someData.dataset &&
someData.dataset.chart &&
someData.dataset.chart.data &&
someData.dataset.chart.data[0] ?
someData.dataset.chart.data[0].frequency : undefined;
// Since using length on undefined will lead to an error, I've to check the type too
if (Array.isArray(newSet) && newSet.length === 5 && oldSet) {
oldSet = newSet;
} else {
throw Error("Dataset update has failed.");
}
}
即使这样,也不能保证数据的新闻集就是我希望看到的数据,因为可能我在寻找[1,2,3,4,5],用户通过他的控制台插入[“a”、“b”、“c”、“d”、“e”]等等。我觉得我可以无休止地改进它,它永远不会是防弹的,而且最终它开始变得复杂,无法理解我自己的代码,我唯一想做的就是用新数据更改旧数据。在这一点上,我觉得我做错了。编码需要更多的时间,我甚至不确定我是否做得很好,但同时我感觉不到什么时候停止验证我的代码是有限制的。请告知。我只会坚持用户输入验证。除此之外,如果他们想用开发工具把事情搞糟,那就是他们的问题。不管怎样,那些人只会站在他们这边 重要的是服务器上的验证。客户端输入验证只是为了在处理之前确保普通用户放置的所有内容都没有错误。它还可以保存无用的发送到服务器。服务器必须重新进行验证,因为这些人被搞砸了