首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要了解_.some()

需要了解_.some()
EN

Stack Overflow用户
提问于 2016-03-30 17:10:45
回答 3查看 60关注 0票数 0

可能是我今天早上非常昏昏欲睡,但我很难理解为什么这会以true的形式返回

代码语言:javascript
复制
_.some([null, 0, 'yes', false]); // true

我知道,如果至少有一个元素通过谓词测试,_.some()返回true。但据我理解,如果没有提供谓词,则使用_.identity()。但是,使用_.identity()单独记录这些元素时,不会返回其中任何一个元素的true。那么为什么它会返回true呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-30 17:15:29

没有谓词,some使用identity,它使用值本身,而'yes'是真实的。

快速浏览注释源 (特别注意cb和处理缺少的谓词)本质上给您留下了一种强制执行布尔值的方法:

代码语言:javascript
复制
if (predicate(obj[currentKey], currentKey, obj)) return true;

没有谓词意味着您使用的是原始值,所以是if ('yes'),这是真的。

您不会在控制台中看到其中任何一个值的true,因为_.identity将返回值本身(所以是'yes'),而不是将其强制为布尔值。如果您要执行!!'yes' (强制和双不要),您将看到true

票数 2
EN

Stack Overflow用户

发布于 2016-03-30 17:15:50

'yes'是真实的:

代码语言:javascript
复制
_.some([null])  // false
_.some([0])     // false
_.some(['yes']) // true
_.some([false]) // false

来自javascript链接中的真理、平等

构造if (表达式)语句将强制使用抽象方法ToBoolean将表达式的计算结果转换为布尔值,ES5规范对该方法定义了以下算法:

string:如果参数是空字符串(其长度为零),则结果为false;否则,结果为true。

票数 2
EN

Stack Overflow用户

发布于 2016-03-30 17:15:05

它不需要返回文字值true,它只需要返回一个真实的值(尽管您总是应该只返回布尔值)。

是真实的 (您可以通过Boolean('yes')!!'yes'进行测试)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36315413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档