注:该文章会不断添加更新。
一、基本语法
ECMAScript基础概念如下:
1,
区分大小写。在ECMAScript中变量,函数名运算符及其他一切东西都是区分大小写的。
??????? test不等于Test。
2,
变量是弱类型的。定义ECMAScript变量时只需使用var即可将它初始化为任意的值。
??????? var color="red";??? //一个String类型变量
??????? var num=25;?????????//一个Number类型变量
??????? var visible=true;??? //一个Boolean类型变量
3,
每行结尾的分号可有可无。如果没有分号,ECMAScript自动将本行的结尾看作该语句的结束。
(最好的习惯是写上分号,否则部分浏览器无法运行)。
4,
注释与java/C等相同。当行注释为“//”,块注释为/*........*/。
??????? //单行注释
??????? /*多行
?????????? 注释*/
5,
括号代表代码块。{...}之间的语句为一个代码块。
二、变量???
基本规则:??? 1、首字母必须是字母,下划线(_)或
美元符号($)。
??? 2、剩余字符可以使下划线,美元符号或字母,数字。
???
??
?命名规则(非强制性规则):?? 1、
Camel标记法。(首字母小写,剩余单词首字母大写)。
??????? 如var?myTestVar。
?? 2、
Pascal标记法。(首字母及剩余单词首字母全大写。)
?????? 如var MyTestVar。
?? 3、
匈牙利类型标记法。(在变量名前附加一个小写字母说明该变量的类型)
????? 如iNum(Integer型),sValue(String型),bStatus(Boolean型),oBox(Object型)等。
?
其他:? 变量使用前可以不用声明(不是一个好习惯)。
三、变量类型
???
原始值与引用值:
??? 1、
原始值是存储在
栈中的简单数据段。
??? 2、
引用值(即对象类型值)是存储在
堆中的对象。(存储在变量出的值是一个指针,指向存储对象的内存处)。
???
原始类型(5个):??? Undefined,Null,Integer,
String,Boolean.
?? 使用
typeof测试变量类型(原始类型):
?? 实例:
1?????var?sTemp="test?String";
2?????alert(typeof?sTemp);????//输出String
3?????alert(typeof?95);????????//输出Number
4?????alert(typeof?null);????????//输出object
5?????alert(typeof?aaa);????????//未定义变量返回undefined
6?????alert(typeof?false);????//输出Boolean
???
注意:对象和NULL都会返回object。因为null被认为是对象的占位符。
?
(Undefined类型)
? 1、
undefined指未初始化的变量,或无返回值的函数。
1??????? var?oTemp;
2????????alert(typeof?oTemp);????//定义但未初始化
3????????alert(typeof?oTemp2);??//未定义亦未初始化
4????????function?testFunc(){
5????????}
6????????alert(typeof?testFunc());
7?
????? 都将返回undefined。??
?????
注意:如果写成alert(typeof testFunc)将会返回function。因为这里返回的是该名称的类型而不是函数值。??? 2、
未声明变量不能参与任何操作或运算。???
1?????????var?oTemp;
2?????????alert(undefined==oTemp);???????//返回true
3?????????alert(undefined==oTemp2);?????//未声明的变量做比较返回“变量未定义”的错误信息
4?????????alert(oTemp+"aa");????????//返回“undefinedaa”
5?????????alert(oTemp2+"aa");??????//返回“变量未定义”的错误信息
(Number类型)
?1、
所有整数可以被表示为十进制,八进制或十六进制。?????? var iNum=55;??????? //十进制数据
?????? var iNum=070;????? //八进制数据,在前面加一个0,070代表十进制56
?????? var iNum=0xab;???? //十六进制数据,在数字前加0x,0xab代表十进制171
?2、
尽管所有整数可表示为八进制或十六进制,但所有数学运算都返回十进制。????? 如上述定义的变量用alert()输出时都是十进制数据。
?3、
要定义浮点数,必须包括小数点和小数点后的一位数字。(如用1.0而不是1)
?4、
对于非常大或非常小的数,可以用科学计数法表示(数字加e或E,后加乘以10的倍数)。????? var fNum=3.125e7 表示31250000,fNum1=3e-7表示0.0000003。
?5、
ECMAScript默认将具有6个或6个以上前导0的浮点数转换为科学计数法。
?6、
所有ECMAScript的数都必须落在Number.MAX_VALUE(约为1.79769E308)和Number.MIN_VALUE(约为5E-324)值之间。但计算生成的数值结果可以不落在这个范围之间。
?7、
可以调用isInfinite()判断一个数是否是一个有效数字。????? isInfinite(Number.MAX_VALUE);??????? //返回true
??????isInfinite(2*Number.MAX_VALUE);????//返回false
?8、
一个特殊值NaN(非数),常发生在类型(String,Boolean等)转换失败时。
?????
注意:它与自身不相等。如alert(NaN==NaN)输出false。所以不推荐使用NaN本身,而使用isNaN来判断。alert(isNaN("blue"))输出true,alert(isNaN("123"))输出false?