gpt4 book ai didi

javascript - 短路评估未定义?

转载 作者:行者123 更新时间:2023-11-29 18:17:35 24 4
gpt4 key购买 nike

我正在使用短路评估来设置对象中的键。例如:

var obj = {foo : 'bar'}
var obj2 = {}

obj2.somekey = obj.baz || obj.foo //will assign 'bar' to obj2.somekey

我的代码与上述代码的唯一区别是,如果 obj.baz 不存在,我不会分配 obj.foo,我希望 obj.somekey 保持未定义状态。我尝试了 obj2.somekey = obj.baz ||,但它给我带来了语法错误。

注意 nullundefined,如 this question建议,实际上也不是未定义的。

那么有什么办法可以用短路语法来做到这一点吗?

最佳答案

看起来最简单的解决方案是:

obj2.somekey = obj.baz;

但是如果你真的想要 logical operator 的语义(即空字符串、null0NaNfalse,所有计算结果为 false 所以 || 返回右边的任何内容),使用 void :

obj2.somekey = obj.baz || void(0);

请注意,在这种情况下,将分配属性 .somekey,但分配给它的值可能是 undefined。参见 Felix Kling's excellent answer以获得完整的解释。要保留属性 .somekey 本身未定义,只需使用:

if ('baz' in obj) obj2.somekey = obj.baz;

或者即使 .baz 是假的,也要保留 .somekey 未定义,使用:

if (obj.baz) obj2.somekey = obj.baz;

关于javascript - 短路评估未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21692572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com