深入浅出JavaScript(一)
数据类型
1. 六种数据类型
JavaScript包含六种数据类型:基本类型number、string、boolean、null、undefined和对象类型Object。其中,对象类型包含方法function、数组array和日期Date等。
2. 隐式转换
- 使用+时表示连接,使用-时表示数字运算,可以巧用在number和string之间转换;
- 类型相同比较相当于恒等===;
- 类型不同尝试类型转换再比较,我称作为向下转型:
- null == undefined
- number == string,后者会自动转型为number
- boolean会转型为number
- object会转型为number或者string
3. 包装对象
当一个基本类型当对象使用时,只是产生了一个临时对象,将基本类型包装为一个对象,它是没有对象的属性的,使用完一次对象即销毁。
4. 类型检测
- typeof检测:
typeof null; //"object"
- 适合基本类型及function检测,null检测为object
- instanceof检测:
[1,2] instanceof Array; //true
- 适合自定义对象和原生对象,在不同iframe和Window间检测失效
- Object.prototype.toString检测:
Object.prototype.toString.apply(123); //"[object Number]"
- 适合基本类型和内置对象,null检测为null,undefined检测为undefined
表达式和运算符
- 常量、变量、关键字叫原始表达式。
- 原始表达式使用运算符连接叫做复杂表达式;
- 数组表达式可以表示数组的初始化,花括号表达式可以表示初始化对象;
- 函数表达式
- 属性访问表达式,如
Object o = new Object();o = {x:1};o.x; //1
- 对象创建表达式
- 调用表达式
- 运算符分为一元、二元、三元运算符。
- 其他常用
- 逗号运算符
- delete运算符
- this
- in
语句
- JavaScript没有块级作用域(block使用{})
- 函数内有函数作用域,函数内
var a= b= 1;
,b是全局变量,a是局部变量 - try-catch语句抛异常的顺序问题:❤️:从内到外
- 函数和函数表达式
- for--in遍历是不按顺序的
- with遍历,用于深层次遍历,但是不推荐了
不为当下而战,何以颠覆未来