1·.回顾
比较运算符: < > <= >= == != !==
数学运算符:+ - * / % **
赋值运算符: = += -= *= /= %= **= 赋值运算符
基础类型: string Number symbol null undefined Boolean bigInt 存放在栈区
引用类型:object Array function 存放堆区
思考:栈和堆的区别?
2.调试基础
{} 数组[取值] 对象可以使["属性名"] 或者 .属性名 取值
以下是调试段代码
<script>
let obj={
name:1,
ss:{
ww:"大哥"
},
arr:[1,"arr中的数据",{qwe:"数据中的数据"},4,8]
}
console.log(obj);
// 打印全部,部分包装隐藏{},部分打印数组[]
// console.log(obj.name,obj["name"],"name");
// // 两种调用方式,加单纯打印
// console.log(obj.ss.ww,"ww");
// 不解释
console.log(obj.arr[1],"arr");
// 从0开始
// console.log(obj.arr[2].qwe,"qwe");
// 不解释
</script>
3.逻辑运算符
!非 || 或 && 与
1.结果返回布尔值
2.返回对应的数据?
!去反(非)
|| (或)并联 一个行就行
false || true 返回 true
false || false 返回 false
true || false 返回 true
true || true 返回 true
遇到true 返回true,后续不管了
全是false才返回false
<script>
// let a=false || false
// console.log(a);
let b=undefined||0
console.log(b);
console.log(typeof b);
// 这里涉及到隐士类型转换,夹带和强制类型转换做区分
</script>
js隐士类型转换参考资料:js隐式转换与强制转换汇总_清虚桂意的博客-CSDN博客_js隐式转换和显式转换
&& 与
串联 必须都行才行
true && false 返回false
false && false 返回 false
true && true 返回true
false && true 返回false
遇到false就返回false,后续不管
全是true才返回true,返回最后一个值?
运算符优先级 :
一元运算符>!>算数运算符>比较运算符> 逻辑运算符|| &&>赋值(待补充)
调试段代码:
script>
// let a=false&&true&&false
// console.log(a);
// let b =0 &&"iu"
// console.log(b);
// 数字类型优先级貌似更大
</script>
4.一元运算符
++ 自增 --自减 +1 -1
++ -- 后置,先赋值 不参与运算 ,会修改原来的值进行+1或-1
++ --前置 参与运算 不赋值,会修改原值进行+1或-1
区别就在于 a和c总是要变的,对于整体(+10)运算来讲,字母打头就原值计算,运算符打头,加减1
5.if控制
控制流程
if()else{}
如果if(布尔值[变量],隐士类型转换成布尔值才能判断){
true执行该或括号内部代码
}else{否则
false执行这个花括号内部代码
}
调试代码:
<script>
if(a=false){
console.log(a+"喜欢美女" );
}else{
console.log(a+"喜欢看帅哥");
}
</script>
if(){}else if(){}
1.内层嵌套无限套娃;
2.执行完花括号里面带的代码就会跳出去,执行完对应的或括号代码不管后续else if等
3.if(){true进去}esle{false进去}
测试代码
<script>
let a="大力";
let bol="不是";
if(bol=="美女"){
console.log(a+"喜欢美女");
}else if(bol=="帅哥"){
console.log(a+"喜欢帅哥");
}else{
console.log(a+"不结婚");
}
if(true){
if(false){
}else{
}
}
</script>
if...else语句的四种结构用法_光秃秃的康师傅的博客-CSDN博客_else if
6.三目运算符
?:
布尔值判断?true的返回值:false的返回值
复杂的三目不要去写
if(){}代替
调试段:
// let a=0?"帅哥":"美女"
// // 非0自动转换为1
// // 非false自动转换为true
// // 只能判断布尔类型,数字自动转布尔,
// console.log(a);
// let c=false?true:false
// console.log(c);
if(1){
console.log("帅哥");
}else{
console.log("美女");
}
// 不要写去诸如此类复杂的
// let a = true ? true ? "123" : 123 : false ? "false123" : "false的false"
// console.log(a);
7.switch 控制 循环判断
1.switch(){
case 布尔值:
true执行对应代码;
break;跳出控制流程
default:默认执行;前面所有判断不成功,就执行默认值
}
请你区别和if循环特别是在跳出方面的区别?
:判断语句结束
:后面要执行的代码
2.switch能完成的,if(){}else 也能完成
3.数据不是传true,传递的是其他数据,传递的值与case设置的条件进行等于判断?
<script>
let a="同性人"
// let a=12
// switch(true){
// case a<18:
// console.log("未成年不能进入网吧");
// // 可以写任意代码
// break;
// case a >=18 && a<=25:
// console.log("欢迎网咖");
// break;
// case a>25 && a<65:
// console.log("建议休息时间来上网");
// break;
// case a>=66 && a<=75:
// console.log("建议你不要上网,外出运动");
// break;
// case a>=76:
// console.log("老板你好");
// }
switch (a){
case"帅哥":
console.log("帅哥");
break;
case"美女":
console.log("美女");
break;
case 10==10:
console.log("同性人");
break;
default:
console.log("不知道");
// 不识别汉字,但识别字符
}
</script>