一.语法javascript
弱类型语法:ECMScript中严格区分大小写(变量、函数名、操做符)。html
标识符:就是指变量、函数、属性的名字,或者函数的参数,标识符第一个字符必须是一个字母、下划线_或者美圆符号,其余字符可使字母、下划线、美圆符号或者数字。标识符中也能够包含扩展的ASCII或者Unicode字母字符,但不推荐。标识符采用驼峰大小写格式。java
注释:ECMAScript采用c风格的注释,包括单行注释和块级注释,单行注释:// ,块级注释:/*---*/正则表达式
严格模式:ECMAScript5中引入了严格模式(strict mode )的概念,要在整个脚本中启用严格模式在顶部添加代码chrome
"use strict";
这行代码看起来像是字符串,并且没有赋值给任何变量,可是其实他是一个编译指示(pragma),用于告诉支持的JavaScript引擎来切换到严格模式,指定函数在严格模式下执行可用浏览器
function (){ "use strict"; //函数主体 }
语句:虽然语句结尾的分号不是必需的,可是加上这个分号能够避免不少错误,在控制语句中使用代码块来让编码意图更加清晰。app
关键字和保留字:http://www.itxueyuan.org/view/6627.html函数
变量:ECMAScript的变量类型是松散型的,就是能够保存任何类型的数据,每一个变量仅仅是一个用于保存值的占位符而已测试
var message;//定义变量 var message="hi";//能够直接赋值 function test(){ var message="hi";//局部变量 } function test(){ message="hi";//全局变量,不推荐!! } function test(){ var message1="hi", message2="hi world";//加逗号能够一次定义多个变量 }
数据类型:包括五种简单数据类型(也称为基本数据类型)undefined、null、boolean、number、string,和一种复杂数据类型object,不支持任何建立自定义类型的机制。编码
1.typeof操做符
undefined---未定义
boolean---布尔值
string---字符串
number---数值
object---对象或者null
function---函数
主意typeof是操做符不是函数,后面的圆括号可加可不加,有些时候typeof操做符会返回一些使人疑惑却正确的值,如调用typeof null可返回object,null为一个空对象,Safari5及以前版本,chrome7及以前版本对正则表达式调用时会返回function,而其余浏览器在这种状况下会返回object。
函数在ECMAScript中时对象,不是一种数据类型,可是也确实有一些特殊属性,所以经过typeof来区分函数和对象是有必要的。
2.undefined类型
在使用var声明变量时没有对其加以初始化时,这个变量的值就为undefined,当在程序中使用未初始化的变量时,会出现undefined,使用没有声明的变量,会出现错误,可是使用typeof操做符来执行两种变量,都返回undefined值,这两种变量从技术上有本质的区别,可是在实际中对哪一个变量都不能执行真正的操做。养成一个良好的习惯,应每个变量都给出初始化值。
3.null类型
表示一个空对象指针,若是定义的变量准备在未来用于保存对象,那么就应该先把它初始化为null。
undefined派生与null,当undefined==null时会返回true,可是它们两个用途彻底不一样。
4.boolean类型
数据类型 | 转换为true的值 | 转换为false的值 |
boolean | true | false |
string | 任何非空字符串 | ”“(空字符串) |
number | 任何非零数字值 | 0和NaN |
object | 任何对象 | null |
undefined | n/a(not applicable)意思时不适用 | undefined |
5.number类型
最基本的数值字面量时十进制整数。
八进制:第一位必须是0,而后位八进制数字序列(0-7),若数值超出了范围,那么前导数字被忽略后面数值被看成十进制解析,八进制在严格模式下时无效的,会致使js引擎抛出错误。
十六进制:前两位必须时0x,后面跟任何十六进制数字(0-9,a-f),字母可大写也可小写,+0和-0被认为相等。
浮点数值:浮点数值的计算会产生舍入偏差,当极大或极小的数值时用e来表示,因为浮点数值所占的内存空间是整数的两倍,因此ECMAScript会不失时机的把浮点数转换为整数。
数值范围:ECMAScript中并不能保存世界上全部的数值,可以表示的最小数值保存在Number.MIN_VALUIE中,在大多数浏览器下,此值是5e-324,最大值保存在Number.NAX_VALUE中,1.7976931e+308,若某次结果计算超出了js数值范围的值,则会被转换成Infinity(无穷大)-Infinity。要想肯定一个数值是否是有穷的,可使用isFinite()函数,参数为数值,返回值为boolean值。
NaN:not a number 用来表示一个原本要返回数值的操做数未返回数值的状况(这样就不会抛出错误了),NaN与任何值都不想等,包括他自身。用isNaN()函数来肯定参数是否是非数值。当使用时,会尝试把数值转换为数值,如true、“10”。也适用于对象,会先调用对象的valueOf()方法,而后肯定该方法返回的值是否能够转换为数值,若不能,再基于这个返回值再调用toString()方法,再测试返回值。
数值转换:三个函数,Number()、parseInt()、parseFloat()
Number()函数:如果Boolean值,true和false分别返回1和0;如果数字值,只是简单的传入和传出;如果null则返回NaN;如果字符串则遵循下列规则,字符串中若只包含数字,则将其转换成十进制数值,若字符串中包含有效的浮点格式,则转换成对应的浮点数值,若包含有效的十六进制格式,则转换为十进制整数值,若为空,则为0,若包含除了上述以外的字符,则将其转换为NaN;如果对象,则调用对象的valueOf()方法,而后依照前面规则转换,若结果是NaN,则调用对象的toString()方法,而后再依次按照前面的规则返回字符串。
Number()函数转换时复杂且不够合理,因此更经常使用的是parseInt()和parseFloat()函数。
parseInt()函数:看是否符合数值模式,她会忽略字符串前面的空格,直到找到第一个非空格字符,若是第一个字符不是数字字符或者负号,会返回NaN,对空字符返回0;若第一个字符是数字字符,能够识别出各类整数格式,可是在解析八进制字面量的字符串时,ECMAScript3和ECMAScript5有分歧,3会认为是八进制的来转换为十进制,5会认为是十进制的把前导0忽略;为了消除这个困惑能够为函数提供第二个参数,转化时用的基数(即多少进制)。建议为了不错误,在任何状况下都要明确指定基数。
parseFloat()函数:始终会忽略前导0,而且只解析十进制,后面没有第二个参数。
6.String类型
字符字面量:
字面量 | 含义 |
\n | 换行 |
\t | 制表 |
\b | 退格 |
\r | 回车 |
\f | 进纸 |
\\ | 斜杠 |
\' | 单引号 |
\" | 双引号 |
\xnn | 以十六进制代码nn表示的一个字符 |
\unnnn | 一十六进制代码nnnn表示的一个Unicode字符 |
字符串的lenght属性包括转义字符的长度,若字符串中包含双字节字符,那么lenght属性可能不会精确的返回字符串中的字符数目。
字符串的特色:字符串一旦被建立,他的值就不能改变,要改变某个变量的字符串,首先要销毁原来的字符串而后用再用另外一个包含新值的字符串填充该变量。
转换为字符串:两种方法:每一个值都有的toString()方法,返回相应值的字符串表现,可是null和undefined没有这个方法,大多数状况下不用传递参数,可是再调用数值的toString()方法时能够传递一个参数,输出数值的基数。第二种方法String()方法,再不知道要转换的值是否是null或undefined的状况下,用String()函数,当值有toString()方法时,调用此方法,若值时null和undefined则返回“null”和“undefined”。
小方法:若把某个值转换为字符串,可使用加号操做符把他与一个字符串“”加在一块儿。
7.Object类型
ECMAScript中的对象其实就是一组数据和功能的集合,可以使用new操做符后跟要建立的对象类型的名称来建立。
var o=new Object();//标准 var o=new Object;//能够省略圆括号,可是不推荐
Object中每一个实例都具备下列属性和方法:
constructor:保存着用于建立当前对象的函数。
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在,而不是在实例的原型中,座位参数的属性名(propertyName)必须以字符串的形式指定。
isPrototypeOf(object):用于检查传入的对象是不是当前对象的原型。
propertyIsEnumerable(propertyName):用于检查给定的属性是否可以使用for-in语句来枚举。属性为字符串形式。
toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
toString():返回对象的字符串表示。
valueOf():返回对象的字符串,数值或者布尔值表示。