我试图用以下内容对属性做一个简单的条件检查:
if ( message.updates[0].message != 'undefined' && message.updates[0].message.message != 'undefined') {
^
TypeError: Cannot read property 'message' of undefined
我也试过:
if (typeof message.updates[0].message.message != 'undefined')
if (message.updates[0].message.message.length > 0)
if (typeof message.updates[0].message.message != undefined)
if ( message.updates[0].message != 'undefined' && message.updates[0].message.message != 'undefined') {
都不行,我每次都犯同样的错误。
这是我根据答案中的要求做检查的数据。
对于下面的数据,不应输入IF并简单传递,不应给出未定义的错误。
谢谢你!
{
_: 'updates',
updates: [
{
_: 'updateReadChannelInbox',
flags: 0,
channel_id: 1415629976,
max_id: 46,
still_unread_count: 0,
pts: 48
},
{
_: 'updateNewChannelMessage',
message: [Object],
pts: 48,
pts_count: 1
}
],
users: [
{
_: 'user',
flags: 33561715,
self: true,
contact: true,
mutual_contact: true,
deleted: false,
bot: false,
bot_chat_history: false,
bot_nochats: false,
verified: false,
restricted: false,
min: false,
bot_inline_geo: false,
support: false,
scam: false,
apply_min_photo: true,
first_name: 'Andrei',
phone: '40756274034',
photo: [Object],
status: [Object]
}
],
chats: [
{
_: 'channel',
flags: 286977,
creator: true,
left: false,
broadcast: false,
verified: false,
megagroup: true,
restricted: false,
signatures: false,
min: false,
scam: false,
has_link: false,
has_geo: false,
slowmode_enabled: false,
call_active: false,
title: 'tester',
photo: [Object],
date: 1616253844,
version: 0,
admin_rights: [Object],
default_banned_rights: [Object]
}
],
date: 1616336995,
seq: 0
}
如果不知道您正在查看的对象/数据结构的详细信息,就很难说出哪里出了问题。例如,您的问题可能只是没有消息。updates[0]
。
我强烈建议注销您的数据,然后在控制台中进行交互,在这些对象上使用方法,这将让您确定预期的行为。
此外,查看这篇文章,它更深入地探讨了检测未定义属性的问题。我认为这些建议会有所帮助。
我注意到几个具体问题:
message.updates[0].message!='undefined'
中有undefined
作为字符串。undefined
是一个原语,而不是字符串,所以不应该用引号包装。(但是,typeof
断言返回字符串,因为undefined
的类型是'undefined'
。)if!message.updates[0]
之类的东西来测试定义是很普遍的。在大多数情况下,这会得到您想要的结果,因为undefined
被视为“falsy”值,然后被!
强制为true。然而,如果实际参数本身有可能是合法的错误的,它将误导您。(特别是,值为零被视为虚假,因此该断言会产生误导。)将其更改为:
if (message.updates[0]?.message?.message !== undefined) {
这是可选的链接操作符,将自动为您处理未定义的错误。
我有一个问题。我写了代码,需要指出数组的元素比数组的下一个元素大。您可以在输出图片上看到数组$arr应该只包含元素70,因为
我正试图在按下某个按钮时弹出一个警报对话框。我首先使用了Android Developer的示例代码而不是'这不起作用,所以我根据在这个站点上发现的情况进行了更改,但是现在我的程序在按下按钮后被迫停止。 就你的知识而言,这是在第二个不同于主要的活动中完成的。不确定这是否重要.... ‘ 碰撞日志:“03-25 19:34:24.373:E/AndroidRuntime(18828):致命异常:ma
2,错误{org.apache.directory.server.LDAP.ldapserver}-ERR_171无法将LDAP服务(10,389)绑定到服务注册表。java.net.BindException:已在使用的地址 请帮忙谢谢 --------提示------------------- JAVA_HOME环境变量设置为/opt/java CARBON_HOME环境变量设置为/mnt/1
问题内容: 我知道这是一个基本问题,但是我很好奇下面的代码为什么不起作用。没有用例不会声明此变量。 我得到错误 我确定这只是我还在学习的基本GOLANG内容。 谢谢你的支持 问题答案: 块有自己的范围。在您的情况下,它们在外部不可见。 您可以在修复前声明。 文件:https://golang.org/ref/spec#Declarations_and_scope 您可能还需要阅读:Go中的声明范围
问题内容: 我正在借助以下方法设置新的React:https : //github.com/facebookincubator/create-react- app 但是,我遇到了一个棉绒问题。我收到以下掉毛错误。 这是导致问题的代码: 我试着使用react / prop-types规则,但无济于事。 问题答案: 根据这个问题发表评论。 这似乎是因为您在安装时仅应使用create-react- ap
我收到一个错误 (节点:2632)未经处理的PromisejectionWarning:TypeError:无法读取模块处未定义的更新成员(C:\Users\Asus\Desktop\Section 50\commands\Main commands\Mod\member count.js:5:31)的属性“channels”。在客户端导出(C:\Users\Asus\Desktop\sectio