2.1模式匹配
/^HTML/ -->匹配以HTML开头的字符串 /[1-9][0-9]*/ /javascript/i
字符串具有可以接受RegExp的方法
var text = 'testing:1,2,3' var pattern = /d+/g pattern.test(text) text.search(pattern) text.match(pattern) text.replace(pattern,'#') text.split(/D+/) -->用非数字截取字符串 text.split(/d+/) -->用数字截取字符串
2.2布尔值
false的布尔值有
undefined null 0 -0 NaN ""
true的布尔值有
所有其他值
注意:Infinity -Infinity是true
2.3null和undefined
null和undefined都是自有类型的唯一成员 typeof(null) -->'object' typeof(undefined) -->'undefined'
等于运算符"=="认为两者是相等的,要使用全等运算符"==="来区分它们。
两者都不包含任何属性和方法,也就是不能用'[]','.'来存取这两个值的成员或方法。
2.4全局对象
var global = this 在客户端JavaScript中window可以替代this
2.5包装对象
var s = "test",n = 1,b = true var S = new String(s) var N = new Number(n) var B = new Number(b) typeof(s) -->"string" typeof(n) -->"number" typeof(b) -->"boolean" typeof(S) -->"object"包装对象的类型都是object "=="等于运算符将原始值和其包装对象视为相等, "==="全等运算符将他们视为不等
2.6 不可变的原始值和可变对象的引用
引用类型(对象,数组)和基本类型(字符,数值等)
var a = [] var b = a b[0] = 1 a[0] -->1 a === b -->true
对象的值都是引用,对象(或数组)的比较均是引用的比较:当且仅当他们的引用基于一个对象时,他们才相等。
如果想得到一个数组或对象的副本,则必需显式的复制对象的每个属性和数组的每个元素。
var a = [1,2,3,4] var b = [] for(var i = 0;i < 4;i++){ b[i] = a[i] } b -->[1,2,3,4] b == a -->false b === a -->false
2.7类型转换
值 | 转换值 | |||
字符串 | 数字 | 布尔值 | 对象 | |
undefined null |
"undefined" "null" |
NaN 0 |
false false |
throw TypeError throw TypeError |
true false |
"true" "false" |
1 0 |
new Boolean(true) new Boolean(false) |
|
""(空字符串) "1.2"(非空,数字字符串) "one"(非空,非数字字符串) |
0 1.2 NaN |
false true true |
new String("") new String("1.2") new String("one") |
|
0 -0 NaN Infinity -Infinity 1(非零数字) |
"0" "0" "NaN" "Infinity" "-Infinity" "1" |
false false false true true true |
new Number(0) new Number(-0) new Number(NaN) new Number(Infinity) new Number(-Infinity) new Number(1) |
|
{}(对象) [](空数组) [9](一个数字元素) ['a'](其他数组) function(){}(任意函数) |
"[object Object]" "" "9" 使用join()方法 javascript源码字符串 |
NaN 0 9 NaN NaN |
true true true true true |