1.数据类型(原始类型):number,string,boolean,null,undefined,object(function,Array,Date……)
2.隐式转换
(1)+:字符串拼接
(2)-:减法
(3) ==:"1.23"==1.23 ; 0==false ; null==undefined ;
(4) === (严格等于)
类型相同,同===;类型不同,转换类型
注:NaN!=NaN new Object != new Object
3.包装类型:new String/Number/Boolean
4.类型检测:
(1)typeof (函数对象和基本类型的判断) typeof null == object
(2)obj instanceof Object 判断对象是不是某种类型(不检测基本类型)、存在继承关系
(3)Object.prototype.toString.apply()
(4)constructor
(5)duck type
5.表达式
(1)原始表达式
(2)初始化表达式
(3)函数表达式 var func = function(){}; (function(){console.log('hello ');})(); //立即执行
(4)属性访问表达式 var obj = {x:1};
(5)调用表达式 Func();
(6)对象创建表达式 new Func(arguments);
6.特殊运算符
(1)逗号运算符 var val = (1,2,3);//val = 3 取最右
(2)delete obj.x
(3)in运算符 检验是否存在
(4)this运算符
7.特殊语句
(1)var语句
var func = function (){var a=b=1;};
func();
console.log(a)//undefined 函数内部的局部变量
console.log(b)//1 成为全局变量
(2)try-catch
(3)function语句
函数声明与函数表达式的区别:
函数声明会被预先处理,可在声明代码前面调用函数
(4)for in
遍历顺序不确定
对象属性受原型链影响
(5)with //不建议使用
注:严格模式与混杂模式的区别:
①不允许使用with;
②不允许未声明的变量被赋值;
③delete删除函数名、参数出错;
④对象字面量重复属姓名报错;