3.基本概念
3.3 变量
- 如果在函数中用var定义一个变量,name这个变量在函数退出后就会被销毁。
- 省略var操作符,在函数内定义变量,是一个全局变量,严格模式下不允许未经声明的变量赋值,ReferenceError。
3.4 数据类型
ES5中有5种简单的数据类型 + 1种复杂数据类型:Undefined、Null、Boolean、Number、String + Object、
3.4.1 typeof
typeof(未定义的值) ==> "undefined"
typeof(布尔值) ==> "boolean"
typeof(字符串) ==> "string"
typeof(数值) ==> "number"
typeof(对象 或 null) ==> "object"
typeof(函数) ==> "function"
- typeof是一个操作符,不是函数,可以省略括号
- null被认为是一种空对象引用
3.4.2 Undefined
- 声明变量未赋值的就是undefined
- 未初始化赋值自动赋予的undefined和赋值undefined本质上是不同的
var message;
console.log(message == undefined) // true
var age = undefined;
console.log(message) // 产生错误
console.log(age) // undefined
3.4.3 Null
- null 表示一个空对象指针
- 如果定义的变量准备存储对象,最好初始化为 null
- undefined 是派生自 null 的
undefined === null // false
undefined == null // true
3.4.4 Boolean
- 空字符串、0、NaN、undefined、null 都是false
var yy = 'hello world';
var xx = Boolean(yy);
3.4.5 Number
- 八进制字面值第一位必须是0,然后是0
7,有超出了07的数字,前导0会被忽略,按照十进制解析 - 八进制在严格模式下无效,会导致js引擎报错
- 十六进制是 0x 开头,后跟0
9以及AF,算数计算时都会转换成十进制 - 保存浮点数需要的内存空间是保存整数的两倍
- 极大或者极小值用e表示法表示
var a = 3.125e7 // 3.125 乘以 10的7次方
var b = 3e-17 // 0.0000000003
- 数值范围
// isFinite() 函数来测试是否合法范围的数字
Number.MIN_VALUE = 5e-324 = -Infinity
Number.MAX_VALUE = Infinity
- 浮点数最高17位小数,有误差
Number(null) // 0
Number(undefined) // NaN
parseInt('') // NaN
parseInt("1234blue") // 1234
parseInt("10", 16) // 按照16进制解析
parseFloat("0908.5") // 908.5
3.4.6 String
var num = 10;
num.toString() // 默认十进制
num.soString(16) // 十六进制
var value = true
String(value) // "true"
3.4.7 Object
var o = new Object(); // 不推荐省略括号
- 每个Object实例都有下列属性和方法
-
constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()。
-
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例 的原型中)是否存在。o.hasOwnProperty("name")
-
isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
-
toString():返回对象的字符串表示。
-
valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。
-
3.6 语句
- for-in:语句是一种精准的迭代语句,可以用来枚举对象的属性