【发布时间】:2014-02-28 15:29:49
【问题描述】:
在 JavaScript 中,变量是松散类型的,因此数字5 和字符串"5" 都可能被多个运算符视为一个数字。但是,是否有一种通用的方法可以在 tunrime 中找出 JavaScript 的转换能力,或者仅仅是几种类型的运算符重载使得松散类型成为可能?
例如,给定一个变量a 和一个包含类型名称type_canditate 的字符串,有没有办法询问JavaScript,如果a 可以以可行的方式转换为type_candidate,与像instanceof 这样的硬类型运算符?例如,"5" instanceof Number 评估为 false,而Math.sin("5") 完全可行。对于数字,可以明显检查 parseFloat(some_number) 的计算结果是否为 NaN,但这是数字的一种特殊情况。
那么,是否有任何通用的命名类型的方法,并检查某些变量是否可以以有用的方式转换为给定类型?
【问题讨论】:
-
没有专门用于此目的的工具,但您始终可以尝试从任何其他类型转换为类型以查看您得到的结果。
-
另外,
parseFloat()不是检查可转换性的好方法。Number()构造函数更安全。 -
Number比parseFloat有什么好处? -
在浏览器控制台试试
parseFloat("23skidoo"); -
好的,但试试
Number(''),它的计算结果为0。所以这两种转换都不能区分数字和非数字。真是一团糟……
标签: javascript typing