一、语法
1、区分大小写;
2、标识符,即变量、函数、属性的名字,或者函数的参数,按照下面格式规则组合:
-
第一个字符必须是字母/下划线/$;(不可以是数字)
-
其它字符可以是字母、下划线、$或者数字
ECMAScript标识符采用驼峰大小写格式;不能把关键字、保留字、true、false和null用作标识符;
3、注释:
//单行注释;
/*
*
*/多行注释(块级)
4、ECMAScript5中引入了严格模式,它是为了定义一种不同的解析与执行模式,一些不确定的行为得到处理,一些不安全操作也会抛出。
5、语句:
-
结尾用分号;
-
通过删除空格可压缩代码;
-
代码块放在{}中。
二、关键字和保留字
三、变量
-
ECMAScript的变量是松散型,可以用来保存任何数据类型,不用声明变量的类型;
-
定义变量用var操作符,其定义的变量是该变量的作用域中的局部变量,当函数被调用时,就会创建该变量,并为其赋值,而此后,该变量会立即被销毁;
-
省略var则会变为全局变量,即可以在函数外部的任何地方访问;
-
可用逗号分隔多个变量,用同一个语句定义;
四、数据类型
1、5种基本数据类型:Undefined、Null、Boolean、Number、String;
1种复杂数据类型:Object(本质上是由一组无序的名值对组成);
所有值最终都将是6种之一。
2、检测给定变量的数据类型——typeof:
返回结果为下面的一种字符串:
-
“undefined”——该值未定义;
-
“boolean”——该值是布尔值;
-
“string”——该值是字符串;
-
“number”——该值是数值;
-
“object”——该值是对象或null;(null被认为是一个空的对象引用)
-
“function”——该值是函数;(函数其实是一种对象,不是一种数据类型,而函数也确实有一些特殊属性, 因此通过该操作符来区分函数和其他对象)
3、Undefined类型:
只有一个值的数据类型——undefined,在使用var声明变量后但未对其初始化,则该变量值为undefined,但对未声明的变量,只能执行typeof一项操作,返回值仍为undefined。
4、Null类型:
只有一个值的数据类型——null,其表示一个空对象指针,用typeof检测时返回object;undefined派生自null;
alert(null == undefined);//true
alert(null === undefined);//false
只要意在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null值,这样体现null作为空对象指针,而且区分于undefined;
5、Boolean类型:
有两个值——true、false,但true并不一定等于1,false并不一定等于0;
将一个值转换为其对应的Boolean值,调用转型函数Boolean():
如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false") ;
6、Number类型:
浮点数值:必须包含一个小数点,且小数点后面必须至少有一个数字。
NaN:
NaN即非数值,是一个特殊的数值,该数值用于表示一个本来要返回数值的操作数未返回数值的情况。
特殊点:
a、任何涉及NaN的操作都会返回NaN;
b、NaN与任何值都不想等,包括NaN本身,alert(NaN == NaN);//false
isNaN()函数:
用于确定该参数是否“不是数值”。首先会尝试将该值转换为数值,若可以转换为数值,则返回false;所有不能被转换成数值的值都会返回true。
数值转换:
Number()函数——可用于任何数据类型;parseInt()、parseFloat()——将字符串转为数值;
parseInt():处理整数时常用,忽略字符串前面的空格,直到找到第一个非空格字符,若第一个字符不是数字或者负号,则函数返回NaN,若第一个是则解析第二个字符直至遇到非数字字符,小数点也不是
数字字符。现在函数多通过提供第二个参数来表示使用多少进制,例如:var num=
parseInt("0xAF",16);或者忽略0x。
parseFloat():该函数与parseInt()的区别为,它是遇见一个无效的浮点数字字符为止,第一个小数点是有效的,第二个则无效;另外,它始终忽略前面的零,并且只解析十进制。
7、String类型:
由零或多个字符组成的字符序列,用双或单引号表示。
转换为字符串:
-
toString():除了null和undefined之外,都可以用该方法返回相应值的字符串。如果括号内传入“输出数值的基数”这个参数,则可以按照相应的基数进行转换为对应的字符串值。
-
String():可以转换null——>"null",undefined——>"undefined";其余同toString()。
8、Object类型:
Object是所有对象的基础,该类型是所有它的实例的基础,对象可以通过new操作符后跟要创建的对象类型的名称来创建:var o = new Object();
五、操作符
1、 递增、递减操作符:++/ --
一元加和一元减操作符:一元加以一个加号表示,放在数值前面,对数值不会产生任何影响:var num=25;num=+num;//仍未25
一元减用于表示负数::var num=25;num=-num;//-25
位操作符:NOT OR AND XOR 左移 有/无符号右移
布尔操作符:逻辑非!:现将其转换为布尔值再求其反;
逻辑与&&:有一个不是布尔值的情况,逻辑与的操作就不一定返回布尔值,逻辑与属于短路操作,第一个操作数能够决定结果就不会再对第二个操作数求值;
逻辑或||:于逻辑与相似;
乘性操作符:* 、/、 %;
加性操作符:+、-;
+:如果两操作符都是数值则直接加;如果有一个是字符串,另一个则转换成字符串,然后拼接,若都是字符串则直接拼接;
-:如果两操作符都是数值则直接减;如果有一个不是数值,则将其转换为数值后再减法运算,如果转换为NaN则结果直接为NaN;
关系操作符:<、>、<=、>=;在比较数值和字符串时,字符串会被转换成数值,再与另一个数值比较,任何操作数与NaN进行比较都是false。
相等操作符:先转换再比较 ==:
null==undefined//true;NaN==NaN//false
全等操作符:不转换直接比较:null===undefined//false;
条件操作符:variable=(expression)? true_value:false_value;
赋值操作符:=/*=/%=......
逗号操作符:用于声明多个变量;用于赋值:操作符返回表达式的最后一项:var num =(5,1,4,6);//num = 6
六、语句
if;
do --while;
while;
for;
for-in:用来枚举对象属性:for(property in expression) statement;该过程会将所有属性都枚举一遍,如果对象的变量值为null或undefined则会报错。
label:在代码中添加标签,该标签可由break语句和continue语句引用,加标签的语句一般都要与for语句等循环语句配合使用。
break:立刻退出循环,强制继续执行循环后面的语句;
continue:立即退出循环,但退出循环后会从循环的顶部继续执行;
break和continue语句结合label时,会返回代码中特定的位置,这种联合使用的情况多发生在循环嵌套的情况下;
with:将代码的作用域设置到一个特定的对象中:with (expression)statement;在严格模式下不允许使用with语句;
switch;
七、函数
-
使用function关键字来声明,后跟一组参数以及函数体;
-
函数可以通过函数名来调用,后面要加上圆括号和参数;
-
任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值,执行完return后会立即停止并退出函数,因此位于其后的语句都不会被执行;
-
参数可以多个,数据类型也不限制,参数在内部是用一个数组来表示的,函数接收到的始终都是这个数组,而不会关心数组中包含哪些参数,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数;
-
arguments对象与数组类似,arguments[0]表示第一个元素,它的length属性可以确定传递进来多少个参数;
-
没有重载:由于不存在函数签名的特性,从而ECMAScript函数不能重载(函数签名:即接受的参数的类型和数量);定义了两个名字相同的函数,则该名字只属于后定义的函数;