三、数据类型
JavaScript 中的数据类型分为原始类型和对象类型:
- 原始类型
- 数字
- 字符串
- 布尔值
- 对象类型
- 数组
- “字典”
- ...
特别的,数字、布尔值、null、undefined、字符串 是不可变。
// null、undefined null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。 undefined是一个特殊值,表示变量未定义。<br><br> // undefined [NaN] undefined表示未定义值。
1、数字Number
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。下面来看一下代码示例:
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
转换:
?parseInt(..) 将某值转换成数字,不成功则NaN
?parseFloat(..) 将某值转换成浮点数,不成功则NaN
特殊值:
? NaN,非数字。可使用 isNaN(num) 来判断。
? Infinity,无穷大。可使用 isFinite(num) 来判断。
代码展示:
<body> <script type="text/javascript"> var num1 = new Number(123); //创建了一个数字类型的对象 var num3 = Number(456); // 456 var num2 = 666; var s1 = ‘s123‘; var num4 = parseInt(s1); console.log(num1.valueOf(),num2,num3); console.log(num4); // NaN if(isNaN(num4)){ console.log(‘not a number‘); // not a number } else { console.log(‘a number‘); } console.log(isFinite(num3)); // 是否是有限值 true Infinity表示无穷大。 console.log(typeof num3); // ‘number‘ 返回的是字符串 var a = 1222.4444444; console.log(a.toFixed(2)); // 1222.44 console.log(a.toExponential(3)); // 1.222e+3 </script>
执行结果:
2、字符串常用方法及属性
调试的地方可以在google chrome 上进行测试,F12点击"Console"
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:
可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。
常见功能:
|
a.replace(/\d+\w\d+/g, "$2eric$1") #不加分组的正则,后面的$不代表任何意义 "alsdf$2eric$1dsf21sfd" $1 $2 代表分组 a.replace(/(\d+)\w+(\d+)/,"$2"+"eric"+"$1") # \w+代表字母与数字 贪婪匹配 "alsdf1eric123sfd" a.replace(/(\d+)[a-zA-Z]+(\d+)/g,"$2"+"eri"+"$1") "alsdf21eri123sfd" $&代表正则内的所有匹配内容。 a.replace(/(\d+)\w+(\d+)/,":before:"+"$&"+":after:") "alsdf:before:123dsf21:after:sfd"
obj.trim() #去除空格
var a = " Luotianshuai " undefined a.trimLeft() #去除左边的空格"Luotianshuai " a.trimRight() #去除右边的空格" Luotianshuai" a.trim() //去除两边的空格 "Luotianshuai" a " Luotianshuai " #这里可以发现我执行了上面的去除空格的命令之后,实际的值是没有改变的 b = a.trim() "Luotianshuai" #但是我们可以通过赋值来改变他b "Luotianshuai"
obj.charAt(index) # 根据索引获取字符串里的字符
b "Luotianshuai" b.charAt(0) "L" b.charAt(1) "u" b.charAt(2) "o"
obj.substring(start,end) #获取字符的子序列,类似于切片
b "Luotianshuai" b.substring(0,3) "Luo"
obj.indexOf(char) #去字符串找指定的字符的索引值是多少
b "Luotianshuai" b.indexof("t") 3
obj.length # 获取字符串的长度
b "Luotianshuai" b.length 12
3、布尔类型(Boolean)
布尔类型仅包含真假,与Python不同的是其首字母小写。
- == 比较值相等
- != 不等于
- === 比较值和类型相等
- !=== 不等于
- || 或
- && 且
布尔类型;例子测试。
a = 123 b = "123" "123" c = 123 >> typeof a "number" >> typeof b "string" >> typeof c "number" >>a == b true >> a === b false >> a === c true >> a !== b true >> a != b false
5、数组
常用方法:
添加 obj.push(ele) 追加 obj.unshift(ele) 最前插入 obj.splice(index,0,‘content‘) 指定索引插入 移除 obj.pop() 数组尾部获取 obj.shift() 数组头部获取 obj.splice(index,count) 数组指定位置后count个字符 切片 obj.slice(start,end) 合并 newArray = obj1.concat(obj2) 翻转 obj.reverse() 字符串化 obj.join(‘_‘) 长度 obj.length
声明一个数组和python中的列表类似
a = [11,22,33,44] #声明一个数组[11, 22, 33, 44]
插入
a = [11,22,33,44] #声明一个数组 [11, 22, 33, 44] a.push(55) #在数组最后增加一个元素 #这里是数组的长度 a [11, 22, 33, 44, 55] a.unshift(00) #在数组最前面增加一个元素 #长度 a [0, 11, 22, 33, 44, 55] a.splice(3,0,‘insert‘) #在指定的索引增加一个元素,括号内(3为索引值,0为固定值,要插入的内容) [] a [0, 11, 22, "insert", 33, 44, 55] a.unshift(100)
移除
a [100, 0, 11, 22, "insert", 33, 44, 55] a.pop() #从尾部获取 a.shift() #从开头获取 a [0, 11, 22, "insert", 33, 44] a.splice(3,1) #从指定位置获取,括号内参数为(元素的索引,后面为索引后的元素个数,包含本身) ["insert"] a [0, 11, 22, 33, 44]
切片
a[0, 11, 22, 33, 44] a.slice(1,3) [11, 22] a [0, 11, 22, 33, 44]
合并
a = [11,22] [11, 22] b = [44,55] [44, 55] a.concat(b) [11, 22, 44, 55] a [11, 22] b.concat(a) [44, 55, 11, 22]
反转
a [11, 22] a.reverse() [22, 11] a [22, 11]
字符串格式化
a [22, 11] a.join(‘_‘) "22_11" a [22, 11]
数组长度
a [22, 11] a.length 2
6、字典
字典是数组的一种特殊形式
var items = {‘k1‘: 123, ‘k2‘: ‘tony‘}
a = {"k1":"alex",11:22}
Object {11: 22, k1: "alex"}a[11]
22
a["k1"]
"alex"