# 3. 基本概念
JavaScript是区分大小写的(变量, 函数名和操作符都是区分的)
标识符: 是指变量, 函数, 属性的名字
标识符规则:
- 第一个字符必须是一个字母, 下划线或者一个美元符号$
- 其他字符可以是字母, 下划线, 美元符号或者数字
定义变量的默认值是
undefined
# 3.1 数据类型
- 基本数据类型:
- Undefined: 该类型只有一个值
undefined
- Null: 该类型只有一个值
null
- Boolean
- Number
- String
- Undefined: 该类型只有一个值
- 复杂数据类型
- Object
# 3.2 typeof 操作符
- 检测变量的数据类型: typeof
- "undefined"
- "boolean"
- "string"
- "number"
- "function"
- "object"
typeof 特殊注意
typeof null = "object"
- 即便一个变量是未被定义的,
typeof
返回也是undefined
// var a;
typeof a; // undefined
# 3.3 Boolean类型
- 执行if语句时, 会对内部控制流语句自动进行相应的Boolean转换, 即调用
Boolean()
TIP
Boolean("") === false;
Boolean(0) === false;
Boolean(NaN) === false;
Boolean(null) === false;
Boolean(undefined) === false;
# 3.4 Number类型
八进制的第一位必须是0, 十六进制第一位必须是0x
3.125e7 = 3.125 * 10^7
js的浮点数的精度在小数点的17位
数值范围:
Number.MIN_VALUE
->Number.MAX_VALUE
超出数值范围是
-Infinity
->+Infinity
判断变量是否是无穷的:
isFinite()
isNaN()
在接收到一个值之后, 会尝试将这个值转换为数值, 如果不能转换,则返回true
isNaN(NaN) //true
isNaN(10) //false
isNaN("10") //false
isNaN("blue") //true
isNaN(true) //true
- 以下三个函数可以把非数值转换为数值
- Number()
- parseInt()
- parseFloat()
TIP
Number()
的转换规则
// 对于boolean会把true转为1, false转为0
Number(true) // 1
Number(false) // 0
// 对于null, 返回0
Number(null) //0
// 对于undefined, 返回NaN
Number(undefined) // NaN
// 对于字符串
// 1.对于只是数字的, 会转换为10进制
// 2.如果是16进制0x的, 也会转成10进制
// 3.字符串为空, 转成0
// 4.其他为NaN
Number('hello world') //NaN
Number('') //0
Number('0011') //11
Number('011') //11
Number('1.1') //1.1
+
操作符和Number()
函数相同parseInt()
会从第一个数字字符依次解析, 直到不为数字为止, 如果第一位就不是数字就会返回NaN
parseInt("") // NaN
parseInt("12blue") //12
parseInt("AF") //NaN
parseInt("AF", 16) //175
parseFloat()
- 只会把第一个小数点作为有效
- 只解析10进制(没有第二个参数), 如果是16进制, 会转换成0
parseFloat("123blue") //123
parseFloat("1.2.3") // 1.2
parseFloat("0xA") //0
parseFloat("aa") //NaN
# 3.5 String类型
toString()
- 数值,布尔值,对象和字符串值都有
toString()
方法,但null
和undefined
没有这个方法 - 数值的toString(n), 按照进制转换
- 数值,布尔值,对象和字符串值都有
String()
的转换规则- 如果值有toString方法, 则调用
- 如果是null或者undefined返回"null", "undefined"
# 3.6 Object类型
操作符应用到对象上时, 会先调用对象的
valueOf()
方法, 判断是否能转换, 如果不能再调用toString()
方法, 在进行测试for...in 用于枚举对象的属性
# 3.7 函数
- arguments 只是类数组, 可以通过下标访问每个参数, 也可以通过length来访问参数长度, 但没有数组的其他方法.