gpt4 book ai didi

javascript - "return doc && doc.userId === userId;"不应该返回 false 吗?

转载 作者:行者123 更新时间:2023-11-30 08:39:33 26 4
gpt4 key购买 nike

我正在跟踪 Discover Meteor tutorial在提交 8-1 之后我们添加:

// Check that the userId specified owns the documents
ownsDocument = function(userId, doc) {
return doc && doc.userId === userId;
}

我不明白的是 doc 和 userId 不是严格相等的 (===),为什么这样行得通?

供引用:

文件:

{ _id:       '1a2b3c4d',
url: 'blahblah.com',
title: 'blah blah',
userId: '0w9x8y7z',
author: 'testuser',
submitted: '...'}

doc.userId:

userId: 0w9x8y7z

用户名:

userId: 0w9x8y7z

我知道 doc.userId === userId,但为什么 doc && doc.userId === userId 会通过?

最佳答案

您混淆的根源似乎是您对此的解释:

if(doc && doc.userId === userId)

如“如果 doc 和 doc.userId 都等于 userId”。事实并非如此。

&& 的每一侧都是一个单独的条件。它与以下内容相同:

if(doc == true && doc.userId === userId)

其次,左侧的 == true 部分是多余的,因此在检查变量是否为 truthy 时通常不包含在内。 .

truthy 的原因检查是您要检查 doc 不是 falsey , 在您尝试访问其上的属性之前。使用逻辑 AND,如果左侧的计算结果不为真,则不会执行右侧。没有检查,如果 docfalsey那么尝试访问 none 对象上的属性将产生错误。

关于javascript - "return doc && doc.userId === userId;"不应该返回 false 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27926044/

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