![](/img/trans.png)
[英]Im learning JavaScript can anyone tell me what Im doing wrong? The sum is supposed to give me and 8
[英]anyone can explain this? or Im doing this wrong?
所以我從數據庫訪問對象這里我有對象:
{
data: {
settings: {
language: 'en-US'
}
}
}
我正在嘗試訪問語言部分,但不知何故不起作用,這是我的代碼:
translate(key, args, base) {
const language = base.data.settings.language
const result = this.translation.get(base ? language : 'en-GB')
...
return result;
}
所以我的問題是對象沒有在結果中定義this.translation.get(base ? language : 'en-GB')
數據已定義,我試過console.log(language)
並且它給了我 en-US :
const language = base.data.settings.language
console.log(language) //returning en-US
const result = this.translation.get(base ? language : 'en-GB') //returning 'cannot read property 'settings' of undefined'
但是如果我將語言變量更改為像const language = "en-US"
這樣的字符串,它對它們都有效,我做錯了嗎?
我猜 base 是一個可選參數。 這解釋了cannot read property 'settings' of undefined
錯誤的cannot read property 'settings' of undefined
它實際上應該出現在代碼的第一行。 您需要按如下方式更改代碼:
const language = base ? base.data.settings.language : "en-GB";
如果路徑可能不存在,那么更安全的解決方案是:
const language = base?.data?.settings?.language ?? "en-GB";
const result = this.translation.get(base ? language : 'en-GB')
在 ^above 行中,您在檢查base
是否為空后傳遞參數。
但同時在前一行中, const language = base.data.settings.language
您已經訪問了base
對象,而不管它是否為空。 那沒有意義。
還,
但是如果我將語言變量更改為像 const language = "en-US" 這樣的字符串,它對它們都有效,我做錯了嗎?
^這意味着問題出在該行
我建議您在那里添加無效檢查,如下所示:
const language = base ? base.data.settings.language : 'en-GB';
const result = this.translation.get(language)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.