0

Does any of you guys use explicit data conversion in JavaScript? For example:

//ModificationAllowed is an integer (1 or 0) value from registry
canModifyRecord = Boolean(application.settings('ModificationAllowed'));
if (canModifyRecord) {
   ... do something
}

I want to keep my code as clean as possible but maybe explicit conversion is redundant?

4

3 回答 3

3

如果您只使用该变量作为条件的条件,则转换为布尔值是多余的if,就像您在此处所做的那样。在 ECMAScript 术语中,if已经使用 ES5将其条件转换为布尔值ToBoolean,这Boolean(arg).

其他情况受到转换的影响,尤其是在相等测试中(无论是严格的还是非严格的):

"foo" == true            // false
Boolean("foo") == true   // true

这是因为非严格相等算法的行为严重依赖于类型。具体而言,请参见步骤 6 和 7 了解布尔与其他比较行为,它将非布尔操作数转换为数字。

于 2013-10-11T15:17:08.973 回答
3

是和不是。这一切都取决于上下文。

如果我正在为模型表示获取数据,那么可以。我会确保我存储的数据输入正确。

如果我使用来自用户或服务器的数据进行计算,那么可以。我将所有内容转换为Number()或我parseFloat他们。

但是对于布尔检查,如果我的检查是本地化的并且没有在应用程序的其他地方使用,那么为了简洁起见,我通常不会进行转换。但是确保正确的类型(!!例如 hack)不会造成伤害。

因此,根据经验:

  • 数据是否可以在其他地方重复使用?然后确保类型正确。
  • 数据范围是否仅限于当前方法/功能?然后,只有当它带来真正的价值(如计算)时才转换。否则,类型自动转换通常是可以的。
于 2013-10-11T15:13:47.667 回答
1

使用!!将变量转换为布尔值对我来说很好很容易

canModifyRecord = !!application.settings('ModificationAllowed');
if (canModifyRecord) {
   ... do something
}
于 2013-10-11T15:11:39.323 回答