const recipe = recipes.find(recipe => recipe.id === id)
if (!recipe) {
location.assign('/index.html')
}
它工作正常,但是当我从对象中销毁时,在这种情况下如何在销毁时使用此if语句?我没有配方变量了。
const {id, title, body, ingredients} = getRecipes().find(recipe => recipe.id === id)
if (!recipe) {
location.assign('/index.html')
}
答案 0 :(得分:2)
如果找到的项目始终具有真实的id
属性,则可以使用||
来确保右侧始终是对象,从而使您可以立即进行销毁,而不会出现错误
无法解构'undefined'或'null'的属性
id
像这样:
const {id:foundId, title, body, ingredients} = getRecipes().find(recipe => recipe.id === id) || {};
if (!foundId) {
location.assign('/index.html')
}
如果.id
属性并不总是真实的,请选择其他一些总是真实的属性(如果有)。
也就是说,我仍然希望在开始时不进行任何结构分解-如果您使用原始的if (!recipe) {
检查,然后再进行IMO结构分解,则代码将更加清晰。
答案 1 :(得分:1)
您可以破坏变量recipie
,而不是破坏直接从.find
方法中找到的值:
const recipe = recipes.find(recipe => recipe.id === id)
if (!recipe) {
location.assign('/index.html')
} else {
var {id, title, body, ingredients} = recipe;
}