第一章 数据类型
1,六种数据类型:原始类型(number,string,boolean,null,undefined) + object对象(Function Array Date)
2,隐式转换:NaN≠NaN,null==undefined,new Object≠new Object(用引用来比较而不是值), new Object()==new Object(),null==undefined
3,类型检测:typeof(typeof null==="object") 原始类型
instanceof(obj instanceof Object) 对象类型 基于原型链判断
object.prototype.toString
constructor duck type
第二章 表达式和运算符
1,逗号运算符:var a=(1,2,3)那么a=3取最右
2,delete运算符:
3,new运算符:new创造构造器实例
第三章 语句
1,没有块级作用域(也就是说变量定义在大括号里外不影响)
2,var a=b=1;(a是局部变量,b是全局变量) 应为var a=1,b=1;
3,严格模式: use strict
报错(SyntaxError)
四 判断x == y
- 如果x不是正常值(比如抛出一个错误),中断执行。
- 如果y不是正常值,中断执行。
- 如果Type(x)与Type(y)相同,执行严格相等运算x === y。
- 如果x是null,y是undefined,返回true。
- 如果x是undefined,y是null,返回true。
- 如果Type(x)是数值,Type(y)是字符串,返回x == ToNumber(y)的结果。
- 如果Type(x)是字符串,Type(y)是数值,返回ToNumber(x) == y的结果。
- 如果Type(x)是布尔值,返回ToNumber(x) == y的结果。
- 如果Type(y)是布尔值,返回x == ToNumber(y)的结果。
- 如果Type(x)是字符串或数值或Symbol值,Type(y)是对象,返回x == ToPrimitive(y)的结果。
- 如果Type(x)是对象,Type(y)是字符串或数值或Symbol值,返回ToPrimitive(x) == y的结果。
- 返回false。