1.若是已经声明了一个变量,可是没有对变量赋值,则该变量的值为undefined,即尚未肯定的数据类型javascript
2.变量提高:js引擎的工做方式是,先解析代码,获取全部被声明的变量,而后再一行一行的运行,这形成的结果就是全部的变量声明语句,都会被提高到代码的头部,这就叫变量提高,如java
console.log(a); var a = 1 ;
上面的代码在声明变量a以前就使用它,这是一种错误的作法,但不会报错,其实真正运行的是下面的代码数组
var a; console.log(a); a = 1;
最后的结果是现实undefined,表示变量已声明,但还未赋值函数
3.js对标志符的大小写敏感,因此a和A是两个不一样的标志符spa
4.js中的条件语句有if else,switch,循环语句有while,for,do while,break(用于在循环体中跳出循环),continue(用于再也不进行本次循环的后续操做,直接进入下一次循环)code
5.若是字符串后面有方括号,表示返回某个位置的字符,从0开始,如'abc'[1],表示字母b。若是方括号中的数字超过字符串的范围或者方括号中根本不是数字,则返回undefined,这是由于js内部把字符串视为由单个字符组成的数组对象
6.若是js预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值,转换规则除了下面5个值被转换为false外,其余都是true。他们分别是 undefined,null,false,0(NaN),""。空数组和空对象对应的值也是trueblog
7.检测变量类型:typeof和 instanceofip
8.js内部,全部数字都是以64位浮点数形式存储,即便整数也是如此,因为浮点数不是精确的值,因此涉及小数的比较和运算要特别注意字符串
9.NaN表示非数字,主要出如今将字符串解析成数字出错的成河,数据类型属于number。它在数值运算时被看成0,在布尔运算时被看成false
10.isNaN()能够用来判断一个值是否为isNaN,如isNaN(parseInt('hello world'))返回true,对于数组和对象也会返回true
11.Infinity表示无穷,除了0除以0获得NaN,其余任意数除以0都获得Infinity,它有正负之分
12.parseInt()方法能够将字符串或小数转化为整数,若是字符串头部有空格,会被去除,如parseInt('12.3')返回12,若是字符串中有不能转换为数字的字符,则再也不进行转换,返回已经转好的部分
13.以下代码能够建立一个数组,var a = new Array(1,4,'r') 或者 var a = [9,'sf',54];
14.检查某个键是否存在的运算符in,使用于数组,也使用于对象
2 in ['a',34,'fd'] //返回true '2' in ['a',34,'fd'] //返回true
15.使用for-in循环,能够遍历数组的全部元素(也可使用for循环)
var a = ['ew',54,'534']; for(var i in a){ console.log(a[i]); }
16.对象成员的引用可使用“点”结构(object.key),也可使用方括号表示,可是数组成员不能使用,arr.0不合法,由于数字不是标志符,因此数组成员只能用方括号来表示
17.length属性表示数组的元素个数,添加新元素后,该元素会自动增加。length属性是可写的,若是认为设置一个小于当前元素个数的值,该数组的元素会自动减小到你设置的值;若是要将一个元素清空,就是将length属性设置为0;若是人为设置大于当前元素个数的值,则数组的长度增长到改制,新增的位置填入空元素
18.若是使用delete命令删除一个值,不影响length属性的值
var a = ['fsd',3,6]; console.log(a.length); //输出3 delete a[1]; console.log(a.length) //输出3
19.因为length属性的特色,使用它进行for循环遍历时要很当心,会遗漏非数字键的属性,而且会包括undefined的值
20.EcmaScript5中新加入的数组方法:map,forEach,filter,every,some,reduce,reduceRight,上面7个与函数式操做有关,indexOf,lastIndexOf-----这些方法的好处在于他们能够链式使用