第三章 基本概念

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

2、语法:

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

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

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

3、变量:ES的变量为松散类型可以var可以定义任何数据类型的变量,使用var操作符可以在该域下定义一个变量,如果没有初始化该变量则默认值为undefined,若没有使用var操作符则会直接创建一个全局变量

4、数据类型:五种基本数据类型: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()返回对象的字符串形式;

 

5、操作符:

  ①一元操作符: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;⑨赋值操作符(=);⑩逗号操作符(,):逗号在用于赋值的时候,只会返回表达式的最后一项

 

6、语句:continue退出内部循环,break退出所有循环;

 

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

 

posted @ 2019-07-15 17:38  ChienPop  阅读(123)  评论(0编辑  收藏  举报