不完全结构
1. 变量名比等号右侧的值少,且没有其他特殊处理的话,多出的值会被忽略
<script>
let [a,b,c] = [10,15,17,23,31]
console.log(a,b,c); //结果:a 10 b 15 c 17
</script>
2. 变量名比等号右侧的值多,多出的变量名值为undefined
<script>
let [a1,b1,c1] = [10,15]
console.log(a1,b1,c1); // 结果:a1 10 b1 15 c1 undefined
</script>
3. 剩余运算符(...) ,会将剩下的值以数组的方式存储到c2变量中
<script>
let [a2,b2,...c2] = [10,15,17,23,31] //结果:a2 10 b2 15 c2
console.log(c2);
</script>
4. 默认值,当等号左侧的变量设置了默认值,在等号右侧又可以找到匹配的值,那么变量的值使用等号右侧匹配的值
<script>
let [a3,b3,c3='default'] = [10,15,'zhangsan']
console.log(c3); // 结果:zhangsan
let [test = 12] = [undefined];
console.log(test); // 结果为 12
let [test1 = 12] = [null];
console.log(test1); // 结果为 null
</script>
对象的结构赋值
<script>
// js中如何定义对象,对象中有属性和值() 属性名:值
let obj = {
name:"张三",
age:18,
sex:1,
study:function(){}
}
// 使用对象中的某个值 对象名称.属性名
// obj.age // 访问对象中的属性
// obj.study() // 调用方法
/*
对象的解构赋值
a. 等号左侧要使用花括号({})包裹变量名
b. 变量名要和对象中要要解构的属性名保持一致
c. 等号右侧就是要解构的对象
*/
let obj1 = {
name:"张三",
age:18,
sex:1,
study:function(){}
}
let {name,age} = obj1
console.log(name);
</script>
js运算符复习
运算符的分类:
算术运算符
+ - * / % ++ --
比较运算符
< > >= <= != == !== ===
问: = == === 的作用(区别)
= 表示赋值 ,就是把等号右边赋值给等号左边的变量
== 表示比较,如果两边的值相等,返回true,否则返回false,忽略数据类型
=== 表示比较 两边的值和数据类型都相同时,返回true,否则返回false
赋值运算符
= += -= *= /= %=
a+=b 等价于 a = a+b
逻辑运算符
&& 只有当两边的条件都为真时,整体返回true,其他情况全返回false
|| 只有当两边的条件都为假时,整体返回false,其他情况全返回true
! 非真即假 非假即真
字符串拼接运算 变量和字符串拼接
+
5+5 得10
10+'5' 得 105
三元运算符
条件?条件为真的执行:条件为假的执行
取余运算 %
<script>
var num = 10
// ++num 和 num++ 对于num这个变量来讲没有任何区别
// var res = ++num // num = 11 res = 11
var res = num++ // num = 11 res = 10
</script>
运算符扩展
<script>
// 指数运算符 符号 **
// 5的3次方
console.log( 5**3);
// 指数赋值运算符 符号 **=
var a = 2;
a**=4 // 等价于 a = a**4
console.log(a);
</script>