【一】JavaScript之运算符
1)算术运算符
加法:+
减法:-
乘法:*
除法:/
优先运算:()
取余:%
-
特殊NaN
- NaN参与的运算结果全是NaN
-
隐式转化
- null转成0
- undefined转成NaN
2)比较运算符
> 大于
< 小于
<= 小于等于
>= 大于等于
== 相等
!= 不相等
=== 全等 与相等区别在于会判断数据类型
!== 不全等
-
特殊NaN
- NaN与任何值都不相对,包括自己
-
infinity(+∞)
-
Infinity == Infinity // true Infinity != Infinity // false Infinity > Infinity // false Infinity < Infinity // false Infinity >= Infinity // true Infinity <= Infinity // true
-
-
null
-
null>=0 // true null<=0 // true null==undefined // true null==0 // false
-
-
字符串
- 字符串是比较字符的编码顺序,从前往后 0-9,a-z,A-Z
3)逻辑运算符
PY | JS | |
---|---|---|
与 | and | && |
或 | or | || |
非 | not | ! |
- 隐式转换
- NaN、0、控制符、null、undefined为false
4)赋值运算符
= 等于
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
%= 取余等于
++ 递加
-- 递减
5)一元运算符
1.++a
-
先增加,后赋值
var a=5; // undefined var eg=++a; // undefined eg // 6 a // 6
2.a++
-
先赋值,后增加
var a=5; // undefined var eg=a++; // undefined eg // 5 a // 6
【二】JavaScript之流程控制
1)if判断
1.单分支
if(条件){
代码块
};
2.双分支
if(条件){
代码块
}else{
代码块
};
3.多分支
if(条件){
代码块
}else if(条件){
代码块
}else{
代码块
};
2)switch-case语法
- 提前定义好可能出现的条件和解决方法
- break
- 断开当前条件
- 若不加匹配成功后会依次执行后面的内容
- default
- 所有条件都不成立时执行
switch (传入内容){
case 条件:
代码块
break;
case 条件:
代码块
break;
default
上面都不走的时候会走的代码块
}
3)for循环
for (起始条件,结束条件,循环条件){条件成立执行的代码}
for (var a=0; a<3;a++) {
console.log(a)
}
// 0
// 1
// 2
// undefined
4)while循环
while(条件){条件成立执行的代码}
var a=0;
while(a<3){
console.log(a)
a++
}
// 0
// 1
// 2
5)do-while循环
- 最后循环语句
- 最少执行一次
do{
执行的代码
}while(条件);
var num=0;
do{
console.log(num)
num++
}while(num<3);
// 0
// 1
// 2
5)三元运算
条件 ? 正确的值 : 否定的值
1 > 2 ? "正确" : "错误";
// '错误'
【三】JavaScript之数组
1)介绍
- 一组有序的数据集合,其内部可存放多个数据,不限制数据类型,长度可动态调整
- 类似于Python的列表
2)创建数组
// 通过字面量
var eg=[]
// 通过数组对象
var eg=new Array()
3)索引取值
var eg=[1,2,3]
// undefined
eg[1]
// 2
4)获取数组长度
eg.length
// 3
5)数组常用的方法
var num=["a","b","c"]
var num_1=new Array();
1.遍历数组
-
forEach处理每个元素
num.forEach((value,index)=>{ // value:当前列表索引对应的值 console.log(`value:${value}`) // index:当前值对应的索引 console.log(`index:${index}`) let res=value+value }) // value:a // index:0 // value:b // index:1 // value:c // index:2
-
for...of可读取元素并自动解包
for(const item of num){ console.log(item) } // a // b // c
2.合并数组(concat)
a=[1,2]
b=["a","b"]
eg = a.concat(b);
// (4) [1, 2, 'a', 'b']
3.将数组转化成字符串(join)
- 可指定转字符串时的拼接符号
eg=["ST1","ST2","ST3"]
eg_new=eg.join('|')
// 'ST1|ST2|ST3'
4.删除(pop、shift)
- pop:弹出数组最后一个元素
- shift:弹出数组第一个元素
5.插入(unshift、push)
- unshift:在数组开头插入元素
- push:在数组末尾插入元素
6.翻转数组(reverse)
7.数组排序(sort)
- 括号内需要自定义排序规则
num.sort((a,b)=>{
return a-b
})
// ['a', 'b', 'c']
8.截取数组部分元素(slice)
num=['a','b','c','d']
new_num=num.slice(2,4)
// (2) ['c', 'd']
9.插入、删除或替换数组元素(splice)
num=['a','b','c','d']
new_num=num.splice(1,2,'x','y')
// (2) ['b', 'c']
num
// (4) ['a', 'x', 'y', 'd']
10.数组转字符串(toString)
eg=["ST1","ST2","ST3"]
eg_new=eg.toString();
// 'ST1,ST2,ST3'
11.获取数组原始值(valueOf)
12.查看指定元素在数组的位置(indexOf)
13.查看指定元素在数组中最后一次出现的位置(lastlndexOf)
14.反应函数映射数组元素(map)
15.根据条件筛选数组元素(filter)
16.判断数组所有元素是否满足条件(every)
17.判断数组元素是否有满足条件的(some)
18.按规则累积数组元素生成单个返回值(reduce)
eg = [1, 2, 3, 4, 5];
sum = eg.reduce((total, num) => total + num, 0)
// 15
19.按规则从末尾累积数组元素生成单个返回值(reduceRight)
- 同reduce,单从末尾开始累积
- 此方法不是ES6标准提供的,但可以通过扩展运算符实现类似效果
eg = [1, 2, 3, 4, 5];
reversedSum = arr.reduceRight((total, num) => total + num, 0)
// 15