2016-04-27 60 views
3

我读过很多关于真理和虚假(http://adripofjavascript.com/blog/drips/truthy-and-falsy-values-in-javascript.html)的好东西,特别是JavaScript中'=='和'==='之间的区别。最好的解释和资源主要从这个堆栈溢出问题:在表单处理的隐藏字段中存储布尔值

Which equals operator (== vs ===) should be used in JavaScript comparisons?

我的工作表单,而且需要一个布尔值存储到一个隐藏字段具有以下jQuery的语法:

$('[name="fieldName"]').val(true);

所以我插入一个布尔值,真或假,到隐藏的领域。在屏幕上的处理,我抢在一些if语句下面的代码的这个字段的值,并进行比较如下:

$('[name="fieldName"]').val() === "true"

注意如何我使用===运算符来比较字符串值“true”。

我的问题;如果只有JavaScript中的Object是类型引用,则布尔值必须是值类型。因此,我会假设,与===运算符的值比较不仅仅是内容而是比较类型,上面的表达式应该返回false?然而,在我的代码中,它返回true - 任何人都可以解释为什么这是?

此代码以前使用==进行比较,但为了避免出现虚假风险,我正在实施===,只要有可能。这可能是与jQuery转换为我的价值观?

+0

中有什么比较的代码$ J′ –

+0

错字 - 删除! – coderwurst

回答

2

难道这与jQuery为我转换值有关吗?

HTML表单元素总是将值存储为字符串,而不管实际内容是什么。在你的情况下,它是一个boolean,但即使它说的是number类型,你会看到的是“10.5”而不是10.5。

如果你真的很想对布尔为boolean,我会建议是:

Boolean($j('[name="fieldName"]').val()) === true 
+0

谢谢@smaili! – coderwurst