JavaScript中的数据类型可分两类:原始类型(primitive type)和 对象类型(object type)。
原始类型宝包括数字,字符串和布尔值。
JavaSciprt中除了数字,字符串,布尔值,null,undefined之外的就是对象了。
对象(object)是属性(property)的集合,每个属性都由“名/值对”构成。
JS的原始值与对象有着根本区别,原始值是不可更改的,任何方法都无法更改一个原始值。
原始值的比较是值的比较,只有在它们的值相等时它们才相等。
JavaScript不区分整数值和浮点数值,所有数字均采用浮点数值表示。
JavaScript中的算术元素在溢出或被零整除时不会报错。当数字运算结果超过了JavaScript所能表示的数字上限,结果为一个特殊的无穷大的值,在JavaScript中以Infinity 表示;同样的,当负数的值超过了所能表示的负数范围,结果为负无穷大,在JavaScript中与 -Infinity表示。
JavaScript通过字符串类型来表示文本,字符串的索引值从 0 开始。
JavaSciprt中并没有表示单个字符的字符型。
在JavaScript中的字符串直接量,是由单引号或双引号括起来的字符序列。
由单引号定界的字符串中可以包含双引号,由双引号定界的字符串中也可以包含单引号。
在ECMAScript5中,字符串直接量可以拆分成数行,每行必须以反斜线(\)结束;如果希望在字符串直接量中另起一行,可以使用转义字符 \n,
例如:
“two \n lines” // 定义一个显示为两行的字符串 "one \ long \ line " // 用三行代码定义了显示为单行的字符串
JavaScript转义字符:
转义字符 | 含义 |
\o | NULL字符(\u0000) |
\b | 退格符(\u0008) |
\t | 水平制表符(\u0009) |
\n | 换行符(\u000A) |
\v | 垂直制表符(\u000B) |
\f | 换页符(\u000C) |
\r | 回车符(\u000D) |
\" | 双引号(\u0022) |
\' | 撇好或单引号(\u0027) |
\\ | 反斜线(\u005C) |
\xXX | |
\uXXXX |
确定一个字符串的长度,可以使用字符窜的length属性,例如:s.length
其他方法:
var s = "hello, world" // 定义一个字符串 s.charAt(0) // "h"第一个字符 s.charAt(s.length - 1) // "d"最后一个字符 s.subString(1, 4) // "ell"第2-4个字符 s.slice(1, 4) // "ell"同上 s.slice(-3) // "rld"最后三个字符 s.indexOf("l") // 2 字符 l 首次出现的位置 s.lastIndexOf("l") // 10, 字符 l 最后一次出现的位置 s.indexOf("l", 3) // 3,在位置3之后首次出现字符 l 的位置 s.split(", ") // ["hello", "world"]分隔成子串 s.replace("h", "H") // 全文字替换 s.toUpperCase() // "HELLO, WORLD"
在JavaScript中,字符串是固定不变的,类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并没有发生改变。
只有两个值: true 和 false
任意JavaScript的值都可以转化为布尔值,
下面这些值会被转换成false:
undefined null 0 -0 NaN "" // 空字符串
其他所有值,包括所有对象(数组)都会转换成 true
布尔值包含 toString()方法,可以使用这个方法将字符串转换为 "true" 或 "false"
逻辑运算符:
$$ || !
尽管 null 和 undefined 是不同的,但它们都表示 “值的空缺”,两者往往可以互换;判断相等运算符 == 认为两者是相等的,要使用严格相等运算符 ===来区分它们。
null 和 undefined 都不包含任何属性和方法。
当JavaScript解释器启动(或者任何WEB浏览器加载新页的时候),它将创建一个新的全局对象,并给他一组定义的初始属性:
在代码的最顶级 —— 不在任何函数内的JavaScript代码,可以使用JS关键字 this 来引用全局对象:
var global = this;
存取字符串,数字或布尔值的属性时,创建的临时对象(String, Number, Boolean)称作包装对象;
它只是偶尔用来区分字符串值和字符串对象,数字和数值对象以及布尔值和布尔对象。
例如:
var s = "hello world!"; var word = s.substring(s.indexof("") + 1, s.length);
JS会将字符串值通过 new String(s)的方式转换成对象。