关于编写js应用程序的一件令人讨厌的事情是,嵌套对象可能会导致错误并破坏整个应用程序。
if(result.applicant._id === null || applicant_id !== result.applicant._id.toString()){
console.log('redirect user');
}
给定以上代码,可能很危险,如果result.applicant._id为null怎么办?那么toString将是无效的,因为它不能是undefined.toString()。在这种情况下如何确保toString()工作?我可以
if(result.applicant._id === null || applicant_id !== (result.applicant._id && result.applicant._id.toString())){}
但这太不干净了。我发现我将有很多重复,只是为了检查使用js的存在。
最佳答案
您的版本可以正常运行而不会触及undefined.toString()
,因为if条件将被短路(短路?),因为result.applicant._id === null
的评估结果为true,而从未评估的applicant_id !== result.applicant._id.toString()
。
在这种情况下,该测试已经不需要添加额外的检查。
更新刚刚意识到===
将不匹配undefined
。
只需将第一部分更改为result.applicant._id == null
,即可匹配undefined
和null
。
if (result.applicant._id == null || applicant_id !== result.applicant._id.toString()){
console.log('redirect user');
}
我知道您可能会以棉绒警告结束,但是在这种情况下,这正是您想要的。