05.数据类型
数值,文本,图像,音频,视频
变量¶
Text Only
var str="hello";
var number=1;
number¶
js不区分小数和整数
JavaScript
123 // 整数123
123.1 // 浮点数123.1
1.123e3 // 科学计数法
-99 // 复数
NaN // Not a number
Infinity // 无穷大
字符串¶
“abc”
'abc'
1.正常字符串使用单引号'abc'。
2.转义字符
Text Only
\'
\n
\u4e2d
3.多行字符串编写
Text Only
let msg=
`hello
world
ddd
`;
4.模板字符串
Text Only
let name='Cindy';
let age=3;
let msg1=`hello, ${name}`;
5.字符串长度
Text Only
console.log(msg.length);
6.字符串可变性不可变
7.字符串其他函数
类Java
charAt
IndexOf
substring
replace
布尔值¶
true
false
逻辑运算¶
Text Only
&&
||
!
比较运算符¶
Text Only
=
== 等于(类型不一样,值一样可以为true,比较值)
=== 绝对等于(要求类型一样,值一样才为true)
这是JavaScript的缺陷,坚持不要用==比较
note
NaN===NaN
为false,这个与所有的数值都不相等,包括自己,只能通过isNaN(NaN)
来判断这个数是否NaN
浮点数问题
JavaScript
console.log((1/3)===(1-2/3));//false
尽量避免使用浮点数进行计算,存在精度问题
JavaScript
Math.abs(1/3-(1-2)/3)<0.00000001
null和undefined¶
null 空
undefined 未定义
数组¶
同一个数组可以存储不同类型的对象
JavaScript
var arr=[1,2,3,"hello",null,true];
new Array(1,2,3,true);
如果数组下标越界,就会得到undefined
array可以包含任意长度的数据类型
Text Only
var arr=[1,2,3,4,5,6]
1、长度
Text Only
arr.length
note:加入给arr.length赋值,数组大小就会发送变化
2、indexOf,通过元素获得下标索引
Text Only
arr.indexOf(0)
-1
arr.indexOf(1)
0
arr.indexOf(2)
1
arr.indexOf(3)
2
字符串“1”和数字1不同
3、slice()截取array的一部分,返回一个新的数组,类似string的substring
4、push和pop尾部
Text Only
push: 压入尾部
pop: 尾部弹出一个元素
5、unshift(), shift()头部
Text Only
unshift压入尾部
shift弹出头部一个元素
6、排序sort()
Bash
var arr=["C","A","B"]
undefined
arr.sort()
Array(3) [ "A", "B", "C" ]
var arr1=[1,4,2,5,2]
undefined
arr1.sort()
Array(5) [ 1, 2, 2, 4, 5 ]
7、元素反转reverse()
Text Only
var arr1=[1,4,2,5,2]
undefined
arr1.reverse()
Array(5) [ 2, 5, 2, 4, 1 ]
8、concat()
concat()没有修改数组,而是返回了一个新数组
Text Only
var arr=["C","A","B"]
undefined
arr.concat([1,2,3])
Array(6) [ "C", "A", "B", 1, 2, 3 ]
9、连接符join
Text Only
var arr=["C","A","B"]
undefined
arr.join("==>")
"C==>A==>B"
10、多维数组
Text Only
var arr=[[1,2],[3,4],["5","6"]]
undefined
arr[1][1]
4
对象¶
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Basic</title>
<script>
let student={
id:1001,
name:"lucy",
course:["blockchain","javascript"]
};
console.log(student.name);
console.log(student.course);
</script>
</head>
<body>
</body>
</html>
定义对象
Text Only
var person={
name:"Cindy",
age:18,
email:"cindy@gmail.com",
score:100
}
js中对象,{.....} 表示一个对象,键值对描述属性 xxxx: xxx,多个属性之间使用逗号隔开,最后一个属性不加逗号! JavaScript中的所有的键都是字符串,值是任意对象! I
1、对象赋值
Text Only
person.name
"Cindy"
person.name="Lucy"
"Lucy"
person.name
"Lucy"
2、不存在的对象属性不会报错,返回undefined
Text Only
person.number
undefined
3、动态删减属性delete
Text Only
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com", score: 100 }
delete person.score
true
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com" }
4、动态添加属性
Text Only
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com" }
person.phone=251829129
251829129
person
Object { name: "Lucy", age: 18, email: "cindy@gmail.com", phone: 251829129 }
5、判断属性值是否在这个对象中
Text Only
"school" in person
false
"name" in person
true
6、判断一个属性是否是这个对象自身拥有的hasOwnPreperty()
Text Only
person.hasOwnProperty("name")
true
person.hasOwnProperty("hometown")
false
Map和Set¶
es6新特性
map键值对
Text Only
let map=new Map(
[
["cindy",100],
["lucy",90],
["tom",80]
]
);
let name=map.get("cindy");
map.set("admin",90);
console.log(map);//Map(4) { cindy → 100, lucy → 90, tom → 80, admin → 90 }
set无序不重复的集合
Text Only
let set=new Set([1,2,3,4,2,2,1,1,2]);
console.log(set);// [ 1, 2, 3, 4 ]
set.add(5);// [ 1, 2, 3, 4, 5 ]
set.delete(4);// [ 1, 2, 3, 5 ]