在JavaScript中,变量是松散类型的,因此数字5
和字符串"5"
都可以被多个运算符视为一个数字。但是,是否有一种通用的方法可以在tunrime中找到JavaScripts转换功能,或者只是为了使松散键入成为可能的几种类型的运算符重载?
例如,给定变量a
和包含类型名称type_canditate
的字符串,如果a
可以转换为type_candidate
,是否有任何方式可以询问JavaScript与instanceof
这样的硬打字操作员相比,这是一种可行的方式吗?例如,"5" instanceof Number
评估为false,而Math.sin("5")
完全可行。对于数字,可以明显地检查parseFloat(some_number)
是否评估为NaN
,但这是数字的特殊情况。
那么,是否存在命名类型的通用方法,并检查某个变量是否可以以有用的方式转换为给定类型?
答案 0 :(得分:1)
JavaScript中有三种原始数据类型:字符串,数字和布尔值。
任何东西都可以转换为字符串或布尔值:
true
(null
除外,后者变为false
- 我在此仅提及它,因为typeof null
提供object
)toString
方法,在转换为字符串时会调用该方法。5
变为"5"
)true
,除非0
变为false
。转换为数字有点棘手,但技术上可行。如果它能找到有效数字,那么它就变成了这个数字。否则,它变为NaN
。
所以基本上...... 任何类型都可以通过这种方式转换成任何其他类型。您有任何类似“错误条件”的内容的唯一时间是NaN
。