【JavaScript知识点一】JavaScript 数据类型
1.undefined
- 使用
var
声明变量未初始化 - 区分空对象的指针和尚未定义的变量(前者为null后者报错返回XXX is not defined)
- 对初始化的变量及未声明的变量使用
typeof
运算符均会返回undefined
2.null
- 逻辑上null表示一个空对象的指针
- 使用typeof检测时会返回object
注:null与undefined区别——前者声明空对象时应将其赋值为null,没有必要将变量值显式的声明为undefined。
3.boolean 布尔类型
- true为真,false为假
- 使用Boolean()进行转换(方法的首字母要大写!)
注:为false的情况有—— 0、-0、undefined、null、false、NaN、''等,最后的空字符串''要和空格字符串' '注意区分,空格字符' '为真。
4.string 字符串类型
4-1 特性
- 由0个或多个16位Unicode字符组成
- 字符串一旦被创建,它的值将不能改变,若要改变必须销毁原有字符串
- 使用.length属性访问字符串的长度:①转义序列表示一个字符 ②无法精确返回双字节字符长度(例如:中文为双字节,一般当做单字节计数)
4-2 转义序列
- 换行
- 制表符
- 空格
- 回车符
- 斜杠
- ' 单引号
- " 双引号
- xnn 以十六进制数来表示ascall字符,n代表0~F
- unnnn 以十六进制代码表示一个Unicode字符,n代表0~F
注:console.log(xnn or unnnn)可以输出其代表的字符,用同'0x'+parseInt(n).toString(16)可以把十进制的数转为16进制,不过转出来的是16进制的字符串。
4-3 类型转换
- toString():使用类型,number、boolean、string、object 参数,number类型的数值基数
- String():null、undefined
- eval() 执行字符串表达式
注:还有一些关于字符串的方法,咱们将在另一节进行讲解
5.number 数值类型
5-1 进制
- 十进制
- 八进制:前导0,有效序列,0~7,超出范围,前导0被忽略,后续数值以十进制计数,当然甚至若超过了十进制,存在字母则会报SyntaxError语法错误
- 十六进制 前导0x,有效序列0~9 a~f,字母超出范围报语法错误
5-2 浮点数
- 小数点后至少一位数字
- 科学计数法:以e为底*10的+-的N次幂
- 缺陷:①存在舍入误差 ②无法测试特定浮点数值
5-3 数值范围
- 最小值 Number.MIN_VALUE
- 最大值 Number.MAX_VALUE
- 超出范围:①正无穷Infinity Number.POSITIVE_INFINITY ②负无穷 -Infinity Number.NEGATIVE_INFINITY ③无法参与下一次计算 ④检测方法 isFinite()超出范围false 合法范围true
注:下面讲到的NaN用isFinite()方法返回false
5-4 NaN
- 含义:Not aNumber 非数值
- 特性:NaN与任何数值都不相等包括其自身
- 检测:isNaN() 判断是否为NaN,是NaN返回true否则返回false
5-5 数值转换
- Number():①boolean true 1 false 0 ②null 0 ③undefined NaN ④String 只包含数字,前导0被忽略、包含有效的十六进制格式,转为相同大小的十进制、空字符串和空格字符串 0、其它格式字符串 NaN ⑤object NaN
- parseInt():①特性:忽略前置空格、直接找到第一个非空字符(不是数字字符或负号——NaN、数字字符——解析所有后续字符 and 遇到非数字字符结束--若参数2指定了16进制为基数,则非数字不包括a~f)、小数点不是有效数字②参数1-要解析的字符串 参数2-转换所用的基数
- parseFloat():①忽略前置空格、直接找到第一个非空字符(不是数字字符或负号——NaN、数字字符——解析所有后续字符 and 遇到非数字字符结束) ②遇到无效浮点格式后结束 ③只有第一个小数点有效 ④十六进制数始终为0 ⑤没有小数点或小数点后全0——转换为整数
6.object 对象类型
- 定义:一组数据或功能的集合
- 声明:var obj = new object();
6-1属性与方法
- constructor 保存用于创建当前对象的函数(例如Date、Array、Object等)
- hasOwnProperty(propertyName) 检测给定属性在当前对象实例中是否存在
- isPrototypeOf(object) 检测当前对象是否是传入的对象的原型
- propertyIsEnumerable(propertyName) 检测给定属性是否能用for-in语句枚举
- toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应
- toString() 返回对象的字符串表示
- valueOf() 发那会对象的字符串、数值或布尔值表示;通常与toString()的值相同