一个完整的javascript实现是有三部分组成:核心(ECMAScript),文档对象模型(DOM),浏览器对象模型(BOM)。
ECMAScript主要描述了:语法,类型,语句,关键字,保留字,运算符,对象。(标准文件:ECMA262)
一、基础语法
变量区分大小写;变量是弱类型的;语句以分号或换行结尾;注释(单行://,多行:/* */);变量组成:第一个字母下划线或美元符号或字母,其它部分可以有数字。
变量命名规则:Camel驼峰法,Pascal法(每个单词首字母都大写),匈牙利类型标记法(Pascal法前面再加上小写的变量类型标示符,如i标示整数,s表示字符串)。
使用一个未初始化的变量时,该变量将会成为全局变量;
关键字:break case catch continue default delete do else finally for function if in instanceof
new return switch this throw try typeof var void while with
保留字:abstract boolean byte char class const debugger double enum export extends final float goto implements import
int interface long native potected public shot static super synchronized throws transient volatile
变量分为原始值(存储在栈stack中)和引用值(存储在堆heap中),原始类型(primitive type)分为5种:undefined,null,boolean,number,string;
用typeof运算符可以检测一个变量的类型,如:alert(typeof "字符串");typeof返回值:undefined,boolean,number,string,object(引用类型或null类型时);
对于未初始化的变量只能使用typeof运算符:alert(type abc),若使用其他运算将会报错:alert(abc == undefined)—会报错。函数无明确返回值时,返回undefined;
alert(null == nudefined) //output "true" 两者相等但意义不同,undefined是声明了变量未对其初始化时赋予的值,null则用于表示尚未存在的对象
number类型:var a=10; var a2=010011;var a8=0773;var a16=0x8fd3; var b=1.5; var c=3.4e3;
所有的计算返回的都是十进制数,浮点值在计算前存储为字符串,10e-6以下的数自动转换为科学计数法;
number类型特殊值:最大值Number.MAX_VALUE,最小值Number.MIN_VALUE,正无穷大Number.POSITIVE_INFINITY,负无穷大Number.NEGATIVE_INFINITY,
isFinit()方法可以判断一个数是否有穷;
字符串可用单引号或双引号包围;没有自符类型;
转义字符:\n换行;\t制表符;\b空格;\r回车 \f换页 \\ \' \" \0nnn八进制数字表示的字符 \xnnn十六进制数字表示的字符 \unnnn十六进制数字表示的unicode字符;
所有的对象和伪对象(boolean,number,string)都有toString()方法;number的toString()方法可以规定转换的进制,如:alert(12.toString(16))//output "c";
类型转换:parseInt()将字符串转换为整数,有基模式,转换第一个不是数字字符之前的数字,parseFloat()没有基模式;
Boolean(value),Number(value),String(value)把给定值value强转为boolean,number,string类型;
Boolean(value):“”,0,undefined,null 将返回false,其他都为true;String(value):和toString不同之处,对null和undefined转换时不会报错;