以编程方式确定类型转换

时间:2011-09-17 03:36:28

标签: javascript

我想找到一种方法以编程方式(即通过编写代码)查找x我们将x == null表达式评估为true的值{{1}} }。

2 个答案:

答案 0 :(得分:3)

如果(至少没有基本的JavaScript规则的先验知识)能够以编程方式确定xx == null为真的{em>所有值是不可能的。但是,以下内容应显示可以从中派生启发式的模式:

var v = [null, undefined, false, true, -1, 0, 1, "", " ", "0", {}, []]
for (var i = 0; i < v.length; i++) {
   var x = v[i]
   alert(x + " == null? " + (x == null))
}

(这个特定的测试用例确实覆盖了它的所有时间。)

可以对== false等进行类似的测试。

快乐的编码。


有关测试值的更多建议,请参阅Ray Toal的答案。

答案 1 :(得分:2)

如果没有至少知道某些关于JavaScript如何执行类型转换的方式,这些转换应用于运算符==,则必须针对{{1}测试每个可能的值并且可能的值的数量是无限的,所以你要求的是无法完成的。

通过一些知识,您可以将所有可能的JavaScript表达式分解为以下类别:

  • 未定义
  • 0
  • 负有限数
  • 正有限数
  • 负无穷大
  • 正无穷大
  • 的NaN
  • 空字符串
  • 一个充满空格的字符串
  • 包含至少一个非空白字符的字符串
  • 一个空对象
  • 具有某些属性的对象

针对null测试每个班级的代表值,看看你得到了什么。

我从问题的方式假设你知道ECMA-262规范中的确切部分,它确切地定义了null的语义。 (the 5.1 spec的第11.9.3节)