数值变量:
- NaN:notanumber,不是一个数,它表示变量存储的数据类型,本身属性数字类型。NaN虽然表示是一个非数字,但是一般是算术运算执行的结果,因此NaN仍然是数值类型;执行运算时,非加法运算,只要有NaN参与,执行结果都是NaN;如果是加法运算,有NaN执行字符串拼接操作,都是数值执行加法运算;NaN永远不会等于NaN即NaN!=NaN,执行结果是false。
不能用NaN来判断一个数是否不是数值:NaN==NaN是不对的
字符串变量:
- 在JavaScript中,单引号,双引号的字符串,都不能解析变量,即只能显示为变量名称的字符串,不会显示为变量中存储的数值。要解决这一问题,有两种方法:字符串拼接、使用模板字符串(``:F1键左下面的键)。比如:
console.log('今天的空气污染是:airPollution')
、console.log(今天的空气污染是:${airPollution})
。
数据类型检验:
-
在JavaScript中,数据类型的检测使用
typeof()
方法/函数。typeof(变量/数据)
,执行结果是变量中存储数据的数据类型;typeof还有一种语法形式typeof+空格+变量
,但是这种语法形式不推荐使用,容易程序执行错误。注意:typeof()
并不能非常准确的表示每一种数据类型,一般是用于判断布尔类型、数值类型、字符串类型和undefined类型。 -
原因:在JavaScript程序中,变量中存储的数据类型虽说没有限制,可以存储任何符合JavaScript语法规范的数据类型,但是在JavaScript程序的执行过程中,往往需要变量中存储的数值是某种特定的数据类型,别的数据类型不行,此时就需要进行数据类型的转化。总之,它是为了我们的需求所存在的。
-
结论:整数、浮点数、
NaN
执行结果都是number
;布尔类型的执行结果是boolean
;字符串类型的执行结果是string
;undefined执行结果undefined
;null执行结果object
。typeof(typeof(变量/数据) )的结果始终为string
。
数据类型转换:
-
分类:自动转化和强制转化。自动转化是计算机程序,自动完成的转化,自动转化不是任何时候都会发生的,只有特殊情况,才会发生。强制转化是程序员强行完成的转化。下面针对自动转换和强制转换进行说明。
-
第一个,在if判断中,会
自动转换
为布尔类型,比如:0、''、undefined、null、NaN
这五种情况转化为false
,其他的所有都会转化为true
; -
第二个,在执行字符串拼接时,会将其他数据类型
自动转化
为字符串类型。执行字符串拼接时,拼接符号+号两侧应该都是字符串类型,如果是其他类型JavaScript程序,会自动转化为字符串类型,再执行拼接。这里有三种特别的形式:数组、对象、函数,这些在进行拼接转换时,数组会把[]去掉再拼接;对象先变成[ object Object ]再进行拼接;函数会原封不动地进行字符串拼接。
-
第三个,
自动转化
数值。情景在执行数学运算时,会触发数据类型的自动转换。Boolean数据类型:true -->1,false -->0;undefined数据类型 -->NaN;null -->0;String数据类型:如果整个字符串是纯数字字符串或符合科学计数法 -->转化为对应的数值,如果字符串内有不符合数字规范的内容 -->转化为NaN;数组,对象,函数:如果是+加号执行的是字符串拼接效果,这些数据类型会按照字符串的原则来转化,如果是其他形式的运算执行结果都是NaN。
-
第四个:
强制转换
Boolean。除了0、''、undefined、null、NaN
转化为0之外,其余的数据军转换为true。方法:Boolean(),这种方式不会改变原数据的类型。 -
第五个:其他类型
强制转化
为字符串类型。方法1,( 变量.toString(进制) ),
进制范围为2~36;方法2,String( 变量/数据 ),
将变量或数据转换为字符串,原则按照自动转换的方式执行,字符串拼接时会将其他数据类型自动转化为字符串。 -
第六个:将其他数据类型
强制转化
为数值类型。方法1,Number( 变量/数值 ),
将其他类型强制转化为数值类型,转化原则与自动转化选择相同。方法2,parseInt( 变量/数据 )
是从数据的左侧起,解析获取整数内容,以获取变量或者数据的整数部分。方法3,parseFloat( 变量/数值 )
变量操作基础中,最重要的是数据的自动转化和强制转化,比如在if判断条件中,它会默认将其自动转化为Boolean类型,当然程序员也可以根据需要,手动的进行数据类型之间的强制转化。在JS原始数据类型中,分为number、string、Boolean、undefined、null和object六大类型,它们之间的传递有些是值之间的传递,有些是地址之间的传递,在操作数据中,一定要注意自己所需要的是什么,不要弄混搅了。