问题标签 [truthiness]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
57 浏览

python - 布尔、等价和对象标识符的神秘案例

字符串的第一个奥秘:
为什么会bool('foo')返回True

如果
'foo' == True返回False
'foo' == False返回False
'foo' is True返回False
'foo' is False返回False

整数之二
怎么会bool(5)返回True

如果
5 == True返回False
5 == False返回False
5 is True返回False
5 is False返回False

第三个零之谜
怎么回来bool(0)False

如果
0 == True返回False
0 == False返回True<--特殊情况
0 is True返回False
0 is False返回False

我知道 Python 的一些真实性,然而,这一切似乎有点神秘。有人介意对此有所了解吗?

0 投票
7 回答
148 浏览

c - Do-while 循环不遵守真值分配 (C)

我的 C 项目是一个 Windows 控制台应用程序,它从用户的音乐项目中获取拍号和 BPM,并以秒为单位返回小节的长度。
我正在尝试使用 do-while 循环来添加“继续/退出?” 在每次成功计算结束时提示这里是该函数的源代码。它根据用户输入执行一项计算,然后终止。

每次计算成功后,我想提示用户选择“y”返回初始输入提示或“n”结束程序并退出命令提示。稍后的更新包括一个 do-while 循环,旨在添加该功能。

当我编译时,没有错误,但是当我运行它时,程序在任何输入后循环。为什么代码忽略了我的真实分配?我能做些什么来解决这个问题?

0 投票
6 回答
254 浏览

javascript - 为什么javascript中的“假”真实?

我知道空字符串在 javascript 中是虚假的,而非空字符串在 javascript 中是真实的。

但是,为什么'false'在 javascript 中是真的,规范中有什么明确的吗?是性能问题还是存在您希望字符串'false'表示的情况true

0 投票
1 回答
110 浏览

python - 为什么直接调用 bool() ?

我读过,当 python 评估条件时,类似的东西if x:会被翻译成if bool(x):. 那为什么我会看到很多bool()直接调用的代码呢?这主要是为了可读性还是有其他优势?

0 投票
5 回答
115 浏览

python - Python Regex - 在单词中查找字符串模式

对于以下示例,我在 python 中得到误报。我正在尝试查找字符串中是否存在关键字。问题是字符串中的单词通常由下划线或连字符连接,所以我只希望在关键字不存在时出现肯定的结果。它可以被连字符、下划线或任何不是字母的东西包围,被认为是真实的结果。通常它应该被下划线或连字符包围。它也不区分大小写。

结果应该输出这个 True/False 列表

执行:

结果:

在python中有没有更好的方法来做到这一点?

如果不是,我将如何在 python 中使用正则表达式来做到这一点?

请记住,这是在性能确实很重要的大型数据集上循环的。

0 投票
4 回答
5863 浏览

javascript - 在javascript中是-1真还是假?

当我使用 indexOf 时,我无法确定 -1 在 javascript 中是真还是假。

为什么最后两行给出真/假?

据我了解,只有 == 允许类型转换,因为(=== 是严格的)

(!a) 和 (!b) 在内部某处使用 (==) 吗?

0 投票
5 回答
4121 浏览

python - 如何在返回语句中将字符串评估为布尔值?

我在 Python 3.4 中有这样的函数:

当然还有其他的写法,比如return the_str != "". 有没有更多的 Pythonic 方式来编写这个表达式?我熟悉真/假的概念,所以我知道我可以在 if 条件下简化它:

但是在它的表达式中if 期望一个布尔结果(这是我作为一个 C++ 程序员的天真的过度简化;我不熟悉这个标准)。但是,没有任何东西可以强制表达式在 return 语句中计算为布尔值。我试过只返回字符串,只要没有人将返回的值视为字符串,它在布尔上下文下调用代码就可以正常工作。但从后置条件的角度来看,我不想返回非布尔类型。

0 投票
0 回答
86 浏览

ruby-on-rails - 为什么对枚举值的真实检查不能像我预期的那样工作?

在我的membership模型上,我有以下枚举值:

然后在一些代码的其他地方,当涉及到membership模型时,我有这个if-branch

奇怪的是对于membership.user?返回的属性,执行仍然在块false内传递。if

这是一个pry会话的示例。

所以从membership上面的对象,你可以看到membership.relative_type等于0,对应于member。所以这就像你所期望的那样工作,特别是在membership.member?返回 true 的情况下。

我不明白的是....在这个当前实例中,为什么这个 PRY 实例是从if块内执行的,只有在为真时才应该执行membership.user?......但这里显然是错误的。

编辑 1

奇怪的是,我将方法编辑得更明确,如下所示:

if membership.user? == true

但它仍然将执行发送到if-block即使membership.user?是假的。

编辑 2

我什至更进一步,比较了枚举的实际值,如下所示:

但仍然没有骰子。

0 投票
2 回答
850 浏览

groovy - Groovy null 检查不适用于列表中的属性

POJO:

我的数据:

List<Item> items = new ArrayList(new Item(prop1: 'something'), new Item(prop1: 'something'))

然后我尝试:

即使项目列表中的两个项目的 prop2 为空,上面的代码也会返回 true 并进入 if 语句。

有人能告诉我为什么吗?

0 投票
2 回答
520 浏览

python - Python真实性 - 不同检查之间的不同行为

我经历了 Python 中的 Truthiness并理解[]类似的空对象在 Python 中被解释False

但是当我在 REPL 中输入以下内容时,它会返回False

这怎么可能?