第三章 基本概念

一、任何语言都包括语法、操做符、数据类型、流程控制语句、函数数组

二、语法:函数

  ①JS里的全部标识符都区分大小写,标识符包括变量名、函数名等,标识符只能以字母下划线_美圆$开头,切记不能以数字开头以及用关键字和保留字做为标识符;性能

  ②注释有单行注释//,也有块级注释/**/;编码

  ③在脚本顶部或者函数内部的顶部使用”use strict”便可启动严格模式;spa

三、变量:ES的变量为松散类型能够var能够定义任何数据类型的变量,使用var操做符能够在该域下定义一个变量,若是没有初始化该变量则默认值为undefined,若没有使用var操做符则会直接建立一个全局变量对象

四、数据类型:五种基本数据类型:Undefined、Null、Boolean、Number、String,一种复杂数据类型:Object(实质由一对无序键值对组成,空对象/null);内存

  ①操做符typeof,用于检测数据类型,返回undefined/null/布尔值/string/number,注意:对未声明的变量使用会返回undefined,null被认为是空对象的引用;字符串

  ②Undefined只有一个值undefined,注意:undefined的值派生于null的值,所以在值上它们是相等的;原型

  ③Null的值只有null,一个变量在未来用于保存对象时应当初始化成null;同步

  ④Boolean有ture/false两个值,但它们字面值和数值是不一样的,任何数据类型的变量均可以调用Boolean()函数转为布尔值,如下值会被转为false:空字符串、0/NaN、null、undefined;

  ⑤Number:数值字面量格式有十进制、以0开头的八进制、以0x开头的十六进制;浮点数值会存在舍入偏差的问题而且若是浮点数实际为整数将会被自动转为整数;Number.MAX_VALUE和Number.MIN_VALUE保存着最大和最小数值;NaN即非数值,用于表述一个将要返回数值而未返回数值的状况,任何涉及NaN的操做都会返回NaN,NaN不与任何数值相等,包括其自己,能够经过isNaN()函数来判断一个数值是否不是数值;数值转换:Number()、用于字符串转换成数值的parseInt(字符串,可选参数:数值的进制)和parseFloat(),Number()函数遵循如下规则:布尔值转换成1/0,null转为0,undefined转为NaN,字符串为空转为0,非数值型字符串转为NaN,对象先调用valueof()再调用toString()转为数值;parseInt()遵循如下规则:空字符将会转换成NaN,忽略空格后的一个字符为非数值将会转换成NaN,赶上数值型字符的部分将会转换成数值,小数点以及以后的字符将会被忽略,parseFloat()只会转换第一个小数点,第二个小数点将会被忽略;

  ⑥String:包含转义序列\n,\’,\”,\t,\r,\f,\b,字符串被建立后不能修改,只有销毁再重建,除了undefined和null以外,其它数据类型都有toString()方法,当调用String()方法进行类型转换时,若是该数据toString()方法就会调用,不然即为null或者undefined;

  ⑦Object:全部对象都经过new操做符进行实例化,全部实例化的对象都有Object的如下方法:constructor用于保存建立当前对象的函数,hasOwnproperty(字符串形式的属性)用于检测该属性是否在该实例化对象中,isPrototypeof(object)用于检查传入的对象是不是传入对象的原型,propertyIsEnumerable(字符串形式的属性)用于检测给定的属性可否使用for-in语句进行枚举,toLocaleString()返回对象的字符串形式;

 

五、操做符:

  ①一元操做符:a.前置性和后置型递增递减操做符(++/--)做用于非数字值遵循的规则:将该数据转换成数字或者NaN再执行递增递减;b.加减操做符(+/-):会对非数值数据调用Number()函数;

  ②位操做符:对NaN和Infinity这两个值做用时会被当作0处理,非数值都会调用Number()转型函数进行转换,a.按位非(~):做用于操做数后,结果是操做数的负数减一;b.按位与(&):只有两个数值的对应位都是1才是1,不然是0;c.按位或(|):只要两个数值的对应位中有一个是1结果就是1;d.按位异或(^):只有两个数值的对应位不一样时才是1,相同时是0;e.左移(操做数<<移动位数):会将操做数按照移动位进行左移,空出的位置补0;f.有符号右移(操做数>>移动位数):保留符号位,空出的位置按照符号位补充;g.无符号右移(>>>):不管正负数,空出的位均由0补充;

  ③布尔操做符:a.非(!):会将非布尔值数据转换成布尔值再求其反;b.与(&&):在有一个操做数不是布尔值的时候遵循如下原则:若是第一个操做数是对象则返回第二个操做数,若是第一个操做数不是对象,第二个操做数是对象则在第一个操做数求值是ture的状况下才返回第二个操做数,若是两个操做数都是对象则返回第二个操做数对象;若是操做数存在null/undefined/NaN,则返回null/undefined/NaN。注意:与操做属于短路原则,当且仅当第一个操做数为ture时才会执行第二个操做数,不然只执行第一个操做数。c.或(||):当两个操做符中有一个不是布尔值时,就不必定返回布尔值,此时遵循如下原则:若是第一个操做数是对象时就返回第一个操做数,若是第一个操做数不是对象,而第二个操做数是对象时,当且仅当第一个操做数求值是false时,才返回第二个对象,若是两个操做数都是对象,则返回第一个操做数;注意:或操做也属于短路操做,当且仅当第一个操做数求值为false时才会求值第二个操做数。

  ④乘性操做符:当操做数中不存在数值时会调用Number()进行转型,a.乘法(*):Infinity与0相乘返回NaN;数与NaN相乘返回NaN;b.除法(/):零除零返回NaN;c.求模(%);

  ⑤加性操做符:a.加法(+):+0 + -0 = +0 ;若是有一个操做数是字符串则遵循如下原则:若是两个操做数都是字符串则链接字符串,若是只有一个操做数是字符串,则将另一个操做数调用toString()方法,转成字符串再相加;b.减法(-):+0 - -0= -0;-0 - -0 = +0;若是操做数不是数值,则调用Number()将其转成数值,若是转成的结果是NaN,则减法的结果是NaN;

  ⑥关系操做符(</>/<=/>=):遵循如下原则:若是两个操做数都是字符串,则比较它们的字符串编码,若是有一个操做数是数值,则将另外一个操做数转成数值再比较;与NaN比较都是NaN;

  ⑦相等操做符:a.相等和不相等(==/!==):会先将操做数转换再比较,若是一个操做数中有布尔值,则将布尔值转成1/0,若是操做数中有字符串和数值,则将字符串转换成数值,若是操做数中有NaN,则相等操做符返回false,不相等操做符返回ture;b.全等和不全等(===/!===):未转换直接比较两个操做数,null和undefined属于不一样类型的值,于是为不全等;

  ⑧条件操做符:a?b:c  对a求值,当a值为ture时返回b,不然返回c;⑨赋值操做符(=);⑩逗号操做符(,):逗号在用于赋值的时候,只会返回表达式的最后一项

 

六、语句:continue退出内部循环,break退出全部循环;

 

七、函数:function functionName(arg0,arg1....argN){}; 使用arguments对象能够访问函数中的全部参数,它是一个类数组,而且与参数的值同步,但不是占据相同的内存空间,若是函数没有指定返回值则返回undefined,函数也没有重载.

相关文章
相关标签/搜索