1.数据类型:a.Undefined:未定义
b.Null:空对象指针 var car=null;
alert(typeof car);//”object“
c.Boolean:true 与false 与数字值不是一回事,true不一定等于1,false不一定等于0;
d.Number:八进制需要先导零(070,072);十六进制也需要(0xA,0x1f);浮点数;数值范围:超出范围的值将会被转换为±Infinity(±Infinity无法参与计算); NaN:非数值,与任何值都不相等(包括本身),涉及NaN的操作也都会返回NaN;
e.String:
f.Object:其实例都具有下列属性和方法:constructor,hasOwnProperty(PropertyName),isPrototypeof(Object),propertyIsEnumerable(propertyName), toString(),valueOf();
2.函数:对传进来的参数的类型和个数都不会做约束,都存放在了arguments里面,可以像数组一样去访问(但并不是Array的一个实例),且所有传递的参数都是以值进行传递的,ECMAScript函数没有重载;
3.执行环境和作用域:每个执行环境都有一个与之关联的变量对象;执行环境定义了变量或函数有权访问的其他数据;每个函数在被调用的时候都会创建一个自己的执行环境,当代码在一个环境中执行时,会创建由变量对象构成的一个作用域链。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。
延长作用域链:try-catch的catch块和with语句;
没有块级作用域:if(){}和for(;;){}以及while(){}的花括号领域不会创建一个作用域,会放在当前的执行环境的变量对象,属于作用域链的前端;声明变量不用var时会使得变量成为全局变量;查询变量时会从作用域链的前端逐级往上查找;
4.引用类型:
————未完待续