我發現 JavaScript 設定一個等于 undefined 的變數而不是拋出一個錯誤會使除錯變得更加困難,而且我從來沒有發現它有幫助。例如:
var a = ["apple","banana","orange"]
var b = a[5]
會將 b 設定為 undefined 而不是拋出錯誤。只有稍后使用 b 時才會拋出錯誤,從而更難看到錯誤的來源。
然后我可以檢查 b 的值:
if(b===undefined){
throw "variable undefined"
}
但我不想每次定義或更改任何變數的值時都這樣做。
有沒有辦法讓 JavaScript 在任何變數設定為未定義時自動拋出錯誤?
uj5u.com熱心網友回復:
特別針對這種情況和其他情況,我準備了一個函式,它接受一個物件和鍵/索引的 arr 并回傳目標值,或者在未定義的情況下回傳默認值。您可以更改它以引發錯誤。
這只是意味著,當您想要物件值時,請使用以下語法:gov(obj, [key1, key2])而不是obj[key1][key2].
function gov(object, arr_keys, default_value) {
if (!typeof arr_keys == "array") {
throw new Error("gov arr_keys argument must be an array");
}
for (var i = 0; i < arr_keys.length; i ) {
var key = arr_keys[i];
if (typeof(key) == "number" || typeof(key) == "string") {
if (object && (key in object)) {
object = object[key];
} else {
// throw your error here.
throw new Error("variable undefined");
// or
return default_value;
}
} else {
throw new Error("gov key must be string or integer, " typeof key " given, key=" key);
}
}
return object;
}
var given = {
property: "value",
nested: {
arr: [2, 4, 6]
}
}
console.log("> when key is ok:");
console.log(given["nested"]["arr"][2])
console.log(gov(given, ["nested", "arr", 2], "default value"))
console.log("> when value is undefined:");
console.log(given["nested"]["arr"][5])
console.log(gov(given, ["nested", "arr", 5], "default value"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/497968.html
標籤:javascript 错误处理 不明确的
上一篇:每次點擊都創建苗條的組件
下一篇:求解矩陣中的最長路徑
