HarmonyOS 鸿蒙Next 可选链,问号调用的疑问
HarmonyOS 鸿蒙Next 可选链,问号调用的疑问
官方文档如图。
this.funcAbilityWant?.parameters?.router调用的时候,如果其中有那个?之前的变量为空,那就肯定返回undefined了,如果不为空那就正确返回结果了。
但是这边与上了一遍不加问号的意义是什么呢。
更多关于HarmonyOS 鸿蒙Next 可选链,问号调用的疑问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
- 前面加上 “?” 是为了防止报错因为 undefined 后跟 “.语法” 会报错,可选连可以避免报错
- 看那个 && ,这是一个逻辑中断 $$前如果为 false,也就是为空的话,&& 后面的代码也不继续执行了
- $$前为 true,说明能拿到 router 的值,router 有值再进行字符串比较,避免了空值比较
- 前面加了 “?” 的代码只是一个判断 (router 是否有值,有值为 true,无值为 false),最后不加 ? 的代码才是真正要执行的逻辑 ,router 是不是字符串 ‘funcA’,如果是的话就给 url 赋值
更多关于HarmonyOS 鸿蒙Next 可选链,问号调用的疑问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
您说的1和2没疑问,第三点,问号没值会出现undefined
和‘funcA’相比较,但是他俩比较是会报错吗?还是直接返回false。
第四点,我去查了一下,如果&&
两边相等,会返回后面的这个值,倒还真是不影响后续的相等判断。那这么写唯一目的还真就是防止undefined
和‘funcA’相比较了。头一次见到这样写,hhh感谢解惑,
我还有个疑问,我知道结果没错,但是我没想明白他怎么存的值,因为第二次执行,我怎么想都应该重置了才对。您看看这个您明白吗?感觉您挺会这种的哈哈
https://developer.huawei.com/consumer/cn/forum/topic/0207168276153986664?fid=0109140870620153026
第三点:$$前变量没值的话,逻辑直接中断了,不会继续执行这个if了,甚至不会进行后续的比较直接返回false
第四点:只有&&两边都为true,值才为true;任何一边为false,值都为false。你查的这个资料不便于你理解,
可以在浏览器上 进行测试
针对帖子标题“HarmonyOS 鸿蒙Next 可选链,问号调用的疑问”,以下是对该疑问的直接回答:
在HarmonyOS鸿蒙Next中,可选链(Optional Chaining)和问号调用(Null Conditional Operator,通常用?.
表示)是处理可能为null的对象成员访问的一种便捷方式。这种方式允许你在不引发空指针异常的情况下,安全地访问对象的深层属性或方法。
如果你在HarmonyOS开发过程中遇到了关于可选链或问号调用的具体问题,可能是因为对它们的语法或行为理解不够深入。例如,你可能在尝试访问一个可能为null的对象的深层属性时,没有正确使用?.
操作符,导致代码运行出错或行为不符合预期。
请确保你遵循了HarmonyOS的语法规则,正确使用了可选链操作符。如果你正在访问一个对象的成员,并且该对象可能为null,那么在该成员访问表达式前加上?.
,可以确保当对象为null时,表达式不会抛出异常,而是返回null。
如果你已经按照上述方式操作,但问题依旧存在,可能是因为你的代码中存在其他逻辑错误或语法问题。此时,你可以仔细检查代码,或者参考HarmonyOS的官方文档以获取更详细的信息。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html