JavaScript 变量的数据类型
1.不可改变的原始值(栈数据)
number、string、boolean、undefined、null
特点:
(1).占用空间固定,保存在栈中;
(2).保存和复制的是值本身;
(3).可使用typeof检测这些基本数据类型;
2.引用值(堆数据)
array、object、function
特点:
(1).占用空间不固定,数据保存在堆中;
(2).保存和复制的是指向对象的一个引用;
(3).可使用instanseof检测这些数据的类型;
number类型
1.进制
number类型存在很多进制,除了常用的十进制,还有二级制、八进制、16机制等等;
2.浮点数
(1).小数点后至少有一位数字
(2).最高精度 17位小数(js可正常计算的范围是小数点前、后16位)
(3).缺陷:存在舍入误差,无法测试特定浮点数值
3.数值范围
(1)最小值
Number.MIN_VALUE
(2).最大值
Number.MAX_VALUE
(3).超出最大、最小值的范围
a.正无穷
Infinity
Number.POSITIVE_INFINITY
b.负无穷
-Infinity
Number.NEGATIVE_INFINITY
c.缺陷:无法参与下一次计算
d.检测方法:isFinite()
4.NaN
Not a Number 非数值
特性:
1.任何涉及NaN的操作都将返回NaN
2. NaN不等于任何数,包括自身
检测:isNaN();
5.Number数值转换问题
将目标转换成数字
Number()
(1)Boolean
(2)null
(3)undefined
(4)String
只包含数字的,转换成数字(十进制)
只包含有效浮点格式,转换成浮点数字
空字符串
剩余其他格式的字符串都位NaN
(5)数组
(6)object
6.parseInt
转换成整型
特性
1.忽略前置空格
2.找到第一个非空格字符,若不是数字字符或者负号,则值就为NaN,若第一个非空格字符是数字符号,继续解析其后续字符,遇到非数字字符结束
3.小数点不是有效数字(不算数字字符,即遇到.也结束解析)
7.parseFloat
转换成浮点数
特点:
1.从第一个字符开始解析,遇到无效浮点格式后结束
2.只有第一个小数点有效,后面的小数点无效
3.没有小数点或者小数点后全是0的,直接转换为整数
string类型
特性
1.由0个或多个16位Unicode字符组成
2.单引号和双引号不能交叉使用
3.使用length属性访问字符串长度
(1)转义序列表示一个字符
(2)无法精确返回双字节字符长度
转义序列
\n 换行
\t 制表符
\b 空格
\r 回车符
\f 分页符
\\ 斜杠\
\' 单引号
\" 双引号
\xnn 十六进制数,n代表0-f
\unnnn 以十六进制代码表示一个Unicode字符
类型转换
toString()
数据类型是number boolean string object的都可以使用toString方法
如果传入参数是数字,会将number类型的变量数字,变成对应的进制。即toString方法可以将10进制转成目标进制。相对应的,parseInt方法可以 以目标进制转成10进制。如
将num当成而进制,通过parseInt转成十进制,再通过toString转成其他进制。
小结:
parseInt是以目标进制位基底转成10进制
toString是以10进制位基底转成其他进制
String()
主要null和undefined
eval()
计算字符串表达式的值并以数值形式返回
eval("x=10;y=20;document.write(x*y)")
Boolean类型
true为真,false为假
使用Boolean()进行转换,转换成false的值有:undefined、null、NaN、""、0
转换成true的有:任意非空字符串、非0数字、非空对象
undefined
使用var声明但未初始化的变量
未声明的变量未初始化的变量通过typeof运算符均会返回undefined
null
逻辑上null表示空对象的指针,使用typeof检测时会返回object
注:typeof会返回6种数据类型:number、string、boolean、undefined、object、function
特别的null表示空对象,所以返回的时object,数组返回的也是object
object、array、function
这里先记object的吧
object
定义:是一组数据或功能的集合
声明:var obj = new Object() var obj2={}
属性和方法:
Constructor 保存用来创建当前对象的函数
hasOwnProperty() 检测给定的属性在当前对象实例中是否存在
isPrototypeOf() 检测传入的对象是否是另一个对象的原型
propertyIsEnumerable() 检测给定的属性是否能用for-in语句枚举
toString() 返回对象的字符串表示
toLocalString() 返回对象的字符串表示,改字符串与执行环境的地区对应
valueOf() 返回对象的字符串、数字或者布尔值表示,通常与toString的值相同