JavaScript的数据类型分为基本数据类型合复合数据类型。基本数据类型主要包括数值型,字符型,逻辑型,以及两个特殊的数据类型。
1.普通数据类型
与C,C++,Java等语言不同,JavaScript中的数值包含整数和浮点数。数值型包括10进制,8进制,16进制,还有一些特殊的转换后类型。下面是几种数值型数据的表示方法:
122 //十进制
0X80C//16进制,以0X开头
0671//8进制,以0开头
2.特殊数据类型
特殊数据类型包括Infinity和NAN。Infinity表示值超出了可表示的最大值的范围,而NAN是"Not a number"的缩写形式,表示undefined表达式结果为数值型数据。
3.字符型
在JavaScript中,字符串是一组被引号(单引号或双引号)括起来的文本。与其他语言(如C语言)不同,JavaScript中不对“字符”和“字符串“加以区分,因此,语句"var oneChar="s";"定义了一个只有一个字符”s“的字符串。字符串是与String对象关联的,可以使用charAt()方法从字符串中提取字符,例如:
var myName = "John";
var thirdLetter = myName.charAt(2);
另外,还可以使用length()方法求出字符串的长度。
转义字符 | 涵义 |
/b | 退格 |
/t | 跳格(Tab,水平) |
/n | 回车换行 |
/v | 跳格(Tab, 垂直) |
/f | |
/r | 换行 |
/" | 双引号 |
/' | 单引号 |
// | / |
/000 | 八进制整数,范围000-377 |
/xHH | 十六进制整数,范围00-FF |
/uhhhh | 十六进制编码的Unicode字符 |
4 Boolean布尔型
Boolean型数据又被称为布尔型数据或逻辑型数据,只有两个值:true和false。
5. 特殊数据类型
在Javascript中,有一些是没有任何类型的变量,这种被称为undefined,中文译为”无定义数据类型“。还有一种空值书籍。undefined用来表示不存在的值,或者尚未赋值的变量。null表示空值,是一个”什么都没有“的占位符。null和undefined的区别是:
1. undefined表示一个变量尚未赋值;
2. null表示该变量被赋予了一个空值。
6.变量
JavaScript,Java和C这样的语言之间存在一个重要的差别:Javascript是无类型的,即Javascript的变量可以任何数据类型的值,而Java和C的变量只能存放特定类型的数据。为变量取一个简单而容易识别的名称是非常重要的。JavaScript要求:变量名的第一个字符必须是字母或下划线;并且变量名中不可包含空格以及!,@,#,¥等特殊字符;另外JavaScript的变量名是大小写敏感的。
7.变量作用范围
变量的作用范围又称作作用域,是指变量在程序中的有效范围。根据作用域,变量可以分为全局变量和局部变量。
全局变量的作用域是全局性的,即在整个Javascript程序中,全局变量是处处都存在。一般定义在“Script”块中,在“function”函数外。
而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。
注意:在函数内部,局部变量饿优先级比同名的全局变量优先级高;如果存在与局部变量名称相同的局部变量,或者在函数内部声明了与全局变量同名的餐宿,那么,该全局变量将不再起作用。JavaScript没有块级作用域,函数声明的所有变量无论在哪里声明的,在整个函数中都有意义。
8 基本类型和合成类型
基本数据类型在内存中具有固定大小,而合成类型(如,对象,数组,函数等类型)则可以具有任意长度。因此,不能将合成类型直接存储在关联每个变量的固定内存地址中,实际上存储的也只是对这个值的引用。通常,该引用的形式是指针或内存地址。
9 无用存储但愿的收集
由于对象,字符串和数组没有固定大小,所以,当只有这些数据类型数据的大小已知时,才能对其进行动态分配。JavaScript每创建一个对象,数组或字符串时,解释器都必须分配内存对其进行存储。无论何时分配了内存,最终都要释放这些内存,以便能够被再次利用,否则,程序将会耗尽系统内存而造成系统崩溃。
收集方式:无用存储单元收集(garbage collection)。JavaScript解释器可以检测到程序何时不再使用某个对象。当解释器确定一个对象是无法获得时,就知道该对象不再需要,然后自动释放该对象所占用的内存。