概述
JavaScript是通过ECMAScript伪语言进行描述的,ECMA-262第3版是目前浏览器实现最多的版本,第5版是未来浏览器要实现的版本
语法风格
Javascript语法风格类C语言,区分大小写
标识符
标识符即变量、函数、属性的名字而已,Javascript中标识符的命名规则如下:
① 首字符必须是字母或下划线或美元符号
② 其他字符可以是字母、下划线、美元符号
③ 标识符采用驼峰大小写格式,即第一个字母小写,其他每个有意义单词的首字母大写,例如firstChar
注释方法
由于Javascript语言类C,所以,它也使用C语言注释风格,包括单行注释和多行注释
1 //单行注释 2 3 /*多行注释 4 5 6 */
严格模式
ECMAScript在第5版中引入了严格模式。在严格模式下,Javascript将执行一种不同的解析与执行模型,之前的一些不确定行为将得到处理或错误提示。可以在整个脚本中使用严格模式,亦可以在指定的函数中使用严格模式,只需要将"use strict" 放在它们的前面即可
变量
根据ECMA-262定义,Javascript的变量是弱类型的,它只是在特定时间用于保存特定值的一个名字而已。变量的值及其数据类型都可能在执行过程中改变,即Javascript中的变量可以用来保存任何类型的数据,变量的定义格式:
1 var someValue; //未经初始化,默认保存了undefined值 2 var messages="Hello World!"; //定义变量,并直接初始化为Hello World! 3 var messages=120; //更改变量的值和类型
PS:使用var操作符定义的变量属于局部变量
变量类型
ECMAScript变量的值分两种类型:基本类型值和引用类型值
基本类型值:简单的数据段
引用类型值:由多个值构成的对象
存储基本类型值的数据类型有:Undefined、Null、Boolean、Number、String
PS:JavaScript不支持任何自定义类型
基本类型值和引用类型值的区别:
①引用类型值可以动态的添加属性,而基本类型值则不可以
②基本类型值复制时是创建新的副本进行赋值,而引用类型值复制的是一个指针,还是指向原来的值
③在给函数传递参数时,赋值方式与变量赋值原理相同
检测类型
因为Javascript是松散类型的,所以需要一种机制来检测给定变量的类型,检测方法有两种:
基本类型检测用typeof操作符
引用类型检测用instanceof操作符
undefined类型
undefined类型,只有一个值即undefined,在使用var定义变量但不初始化时候,这个变量默认值就是undefined值。需要注意的是包含undefined值的变量与尚未定义的变量是不一样的。对于尚未定义的变量只能进行一项操作,即使用typeof操作来检测其类型,但是对于尚未定义的变量和未初始化的变量执行typeof操作符,它们返回的结果是一样的,都是undefined值
null类型
null类型,也只有一个值,即null。从逻辑上讲null值表示一个空对象指针。所以检测它类型时返回"object"
var car=null; alert(typeof car);
如果定义的变量,将来用于存储对象,最好将它初始化为null
boolean类型
boolean类型是Javascript中使用最多的一种类型,它只有两个值:true和false,但它们不一定等于1和0
虽然boolean类型只有两个值,但是JavaScript中的所有类型都可以与这个两个值进行转换后等价,可以调用转型函数来完成
可以对任何数据类型的值调用转型函数Boolean(),返回结果取决于要转型的数据类型和实际值,规则如下:
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | 空字符串 |
Number | 任何非0数值(包括无穷大) | 0或Nan |
Object | 任何对象 | null |
Undefined | N/A(不实用) | Undefined |
理解这些转换规则对于控制流程语句至关重要
number类型
number类型采用了IEEE754格式来表示整数和浮点数。各种字面量的表示方法如下
①十进制
var intNum=55; //十进制整数,和我们日常一样的用法
②八进制
var octalNum1=010; //前导为0,八进制表示法,如果超出范围前导0被忽略 var octalNum2=079 //实际被解析为79
③十六进制
var hexNum1=0xA; //十六进制
需要注意的是,无论是八进制还是十六进制,在进行算术计算时,它们的数值最终都被转换成十进制
关于浮点数的处理
浮点数是必须包含一个小数点的数值,并且小数点后面至少有一位数字,Javascript中存储浮点数的内存空间是存储整数的两倍,并且JavaScript会自动将某些浮点数转换成整数nan
NaN类型
NaN,即非数值(Not a Number)是一个特殊的值,它表示本来要返回数值的操作数却未返回数值。它有两个特点
①任何涉及NaN的操作都被返回NaN
②NaN与任何值都不相等
Javascript定义了一个NaN函数,它接受一个参数,用来确定这个参数是否是:“非数值”