使用 var (variable的缩写)运算符声明变量。java
能够用一个var语句定义两个或多个变量:正则表达式
var test1 = "hi", test2 = "hello";
变量命名规则:数组
著名的变量命名规则:函数
var MyTestValue = 0, MySecondValue = "hi";
var MyTestValue = 0, MySecondValue = "hi";
var iMyTestValue = 0, sMySecondValue = "hi";
能够这样命名:性能
类型 | 前缀 | 示例 |
---|---|---|
数组 | a | aValues |
布尔型 | b | bFound |
浮点型(数字) | f | fValue |
函数 | fn | fnMethod |
整型(数字) | i | iValue |
对象 | o | oType |
正则表达式 | re | rePattern |
字符串 | s | sValue |
变型(能够是任何类型) | v | vValue |
ECMA-262定义了ECMAScript支持的一套关键字(keyword)。根据规定,关键字是保留的,不能用做变量名或函数名。this
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
ECMA-262定义了ECMAScript支持的一套保留字(reserved word)。spa
保留字在某种意思上是为未来的关键字而保留的单词。所以保留字不能被用做变量名或函数名。debug
abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile
在ECMAScript中,变量能够存在两种类型的值,即原始值和引用值。设计
为变量赋值时,ECMAScript 的解释程序必须判断该值是原始类型,仍是引用类型。要实现这一点,解释程序则需尝试判断该值是否为 ECMAScript 的原始类型之一,即 Undefined、Null、Boolean、Number和String型。因为这些原始类型占据的空间是固定的,因此可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。3d
在许多语言中,字符串都被看做引用类型,而非原始类型,由于字符串的长度是可变的。ECMAScript打破了这一传统。
若是一个值是引用类型的,那么它的存储空间将从堆中分配。因为引用值的大小会改变,因此不能把它放在栈中,不然会下降变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,因此把它存储在栈中对变量性能无任何负面影响。
ECMAScript有5种原始类型(primitive type),即Undefined、Null、Boolean、Number和String。
1. typeof 运算符
对变量或值调用typeof运算符将返回下列值之一:
2. Null 类型
值undefined其实是从值null派生来的,所以ECMAScript把它们定义为相等的。
alert(null == undefined); //输出 "true"
尽管这两个值相等,但它们的含义不一样。undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示还没有存在的对象。
若是函数或方法要返回的是对象,那么找不到该对象时,返回的一般是null。
3. 科学计数法
对于很是大或很是小的数,能够用科学计数法表示浮点数,能够把一个数表示为数字(包括十进制数字)加e(或 E),后面加乘以10的倍数。
//符号表示的是数56180000。把科学计数法转化成计算式就能够获得该值:5.618 x 107。 var fNum = 5.618e7
引用类型一般叫作类(class),也就是说,遇到引用值,所处理的就是对象。在ECMA-262中根本没有出现“类”这个词。ECMAScript定义了“对象定义”,逻辑上等价于其余程序设计语言中的类。其实就是咱们常说的“对象”。
1. Object对象
对象是由 new 运算符加上要实例化的对象的名字建立的。例如:
var o = new Object();
当有不止一个参数时,ECMAScript要求使用括号。若是没有参数,括号能够省略(建议不要使用):
var o = new Object;
Object对象具备如下属性:
Object对象具备如下经常使用方法:
2. Boolean对象
在ECMAScript中不多使用Boolean对象,即便使用,也不易理解。
问题一般出如今Boolean表达式中使用Boolean对象时。例如:
var oFalseObject = new Boolean(false); var bResult = oFalseObject && true; //输出 true
建议仍是使用Boolean原始值。
3. Number对象
Number对象是Number原始类型的引用类型。要建立Number对象,采用以下代码:
var oNumberObject = new Number(68);
要获得数字对象的Number原始值,只须要使用valueOf()方法:
var iNumber = oNumberObject.valueOf();
(1) toFixed() 方法
toFixed()方法返回的是具备指定位数小数的数字的字符串表示。例如:
var oNumberObject = new Number(68); alert(oNumberObject.toFixed(2)); //输出 "68.00"
toFixed() 方法能表示具备0到20位小数的数字,超过这个范围的值会引起错误。
(2) toExponential() 方法
返回的是用科学计数法表示的数字的字符串形式。
toExponential()方法也有一个参数,指定要输出的小数的位数。
var oNumberObject = new Number(68); alert(oNumberObject.toExponential(1)); //输出 "6.8e+1
(3) toPrecision() 方法
根据最有意义的形式来返回数字的预约形式或指数形式。它有一个参数,即用于表示数的数字总数(不包括指数)。
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(1)); //输出 "7e+1"
toPrecision()方法会对数进行舍入。
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(2)); //输出 "68" var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(3)); //输出 "68.0"
String对象是String原始类型的对象表示法。
var oStringObject = new String("hello world");
String对象的valueOf()方法和toString()方法都会返回String类型的原始值。
1. toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()
toLowerCase()和toUpperCase()方法是原始的,是以java.lang.String中相同方法为原型实现的。
toLocaleLowerCase()和toLocaleUpperCase()方法是基于特定的区域实现的。
String对象有不少的方法,后面咱们再详细地介绍。
2. instanceof 运算符
在使用typeof运算符时采用引用类型存储值会出现一个问题,不管引用的是什么类型的对象,它都返回"object"。ECMAScript引入了另外一个Java运算符instanceof来解决这个问题。
instanceof运算符与typeof运算符类似,用于识别正在处理的对象的类型。与typeof方法不一样的是,instanceof方法要求开发者明确地确认对象为某特定类型。
var oStringObject = new String("hello world"); alert(oStringObject instanceof String); //输出 "true"