运算符
1.算术运算符
加减乘除都是常规的
就是 %求余数有点难 个人理解:能整除就是零,不能整除就是相当于减然后余剩下的,如果数值比自身还大就剩余本身
<script>
// 算术运算符 加减乘除 求余 取模
// let num1 = 10;
// let num2 = 2;
// // 加法
// console.log(num1 + num2); // 12
// // 减法
// console.log(num1 - num2); // 8
// // 乘法
// console.log(num1 * num2); // 20
// // 除法运算
// console.log(num1 / num2); // 5
// // 求余=取模 获得整数
// // 除法运算 获取除法元素后 剩下余数
// console.log(10 % 5);
// console.log(10 % 3);
// 如果一行内 出现了多个算术运算符
// 先乘除后加减 如果有括号 就先算括号
console.log(1 + 1 * 2);
console.log((1 + 1) * 2);
// 如果一行内 确实有很多个 算术运算符 都建议按照自己的想法来加括号
console.log(1 + (2 * 3 + 3) / 4 + 4 * 4 + 5);
</script>
2.圆的面积
3.赋值运算符:+=: 相当于 变量= 变量+ 值
<script>
// 总结:简单来说就是代码的简写,前提左边必须是一个变量
let num = 10
num += 1
// num -= 2
// num *= 4
// num *= 5
// num %=2
console.log(num);
</script>
4.一元运算符
1.对单变量进行操作
2.写在变量后面:先使用再自增:i++
3.写在变量前面,是先自增再使用:++i
<script>
// 一元运算符,如果只有自身,++在前面或者后面都没有什么区别,如果参与运算区别就出来了
let i = 1
// console.log(++i); 输出结果为2
// console.log(i++); 输出结果为2
// 参与运算的情况下有区别
// console.log(++i +2); 输出结果为4
因为前置是先自己加了再参与运算,后置式先运算再自加,所以log一下只是显示的i+2的结果,如果再log一下i会发现此时的i已经变2了
// console.log(i++ +1); 输出结果为3
</script>
let i=5
console.log(--i); 输出结果为4
console.log(i--); 输出结果还是为4(后置是先输出再增或者减)
console.log(i); 这时候才是3
console.log(i++ + ++i + i); 输出结果为7
分析:1 3 3
(i++) + (++i) +(i)
5.比较运算符
==比较值是否相等
===比较值和数据是否相等
!=不等于值
!==不等于值加数据所有
<script>
// 比较后的结果 其实是一个 bool 类型 true , false
console.log(3 > 10); // 打印什么结果 false
console.log(3 > 1); // true
console.log(3 < 10); // true
console.log(3 < 3); // false
console.log(3 <= 3); // 小于或者等于 3
// 判断是否相等 要用 两个 "=" 号
console.log(3 == 2); // false
// let num = 4;
// num = 5; // 只写一个等于号 赋值
// console.log(num == 5); // 两个等于号才是判断
// 判断 3 不等于 5
// console.log(3!=5); // != 不等于
// 拿数字和字符串比较
console.log(3 == '3'); // true 因为两个 == 只会判断值 而不会判断类型
console.log(3 === '3'); // flase 3个等于号 既要判断类型 也要判断值
console.log(3 === 3); // true
console.log(3 != 3); // false
console.log(3 != '3'); // false
console.log(3 !== '3'); // true
console.log('============');
// 比较 一般都是对数字做比较
// 对于字符串做比较 更多是判断两者是否相等
// console.log('A' === 'B');
// 如果拿字符串去 大小的比较,判断的标准是
// 先把字符串 拿去做 转数字
// 转完了数字之后, 才根据数字做大小比较!
console.log('A' > 'B'); // 81 > 82 了解即可 !!!
console.log('斌斌' > '万旺');
// NaN = A || NaN = B
console.log(NaN === NaN); // false 不能以为 两者代码一样就相等 (不是一个数字 )
// js 处理小数 有问题 后面会补充 精度的问题!!
console.log(0.4 + 0.2 === 0.6);
// 类型转换
// console.log(4 > '3');
console.log(4 > Number('3'));
</script>
6.逻辑运算符
就是给两个条件判断,$$就是与 有一个条件不满足都会显示为false
|| 就是或 相反 有一个条件满足都是true
!就是非 不管你结果是true还是false 一但加上得到的结果都为相反的
<script>
/*
有个数据 大于5 而且 小于 10
*/
let num = 6;
console.log(num > 5 && num < 10); // true
console.log(num > 5 && num < 4); // 一假则假 false
// 我有钱包 要不 等于 1块钱 要不就 等于 0
let money = 10;
// 一真则真
console.log(money === 1 || money === 0); // 只要满足了随便一个条件 那么这个钱包就是我的
let gender = true; // true 男生
console.log(gender); // true
console.log((!gender)); // 取反了 false
</script>
7.短路运算符
1.$$:判断条件有一个错都会停下来
2.||:判断条件有错的还会往下判断,直至最后一个
3.这几个转为布尔类型都会显示为false:undefined null 0 空字符串 false NaN
<script>
// 一假则假 && 左边为false 右边就不再去执行
// console.log(2 > 10 && 1 < 3 && 3 > 1 && 9 > 5 && 5 < 10 && 8 > 2);
// 工作中常见的写法
// 如果今天还下雨 那我就去吃海鲜
// 不下雨 不去吃海鲜了
// let rain = false;
// 左边成立了 右边才会去执行
// rain && console.log('下雨 去吃海鲜');
// 逻辑或 一真则真
// 只要 || 左边 成立了为true,右边就不再去执行
// console.log(100 > 3 || 2 > 6 || 9 > 10 || 10 > 11 || 13 > 20);
// 工作中 常用的技巧
// 如果下雨,那么我就不玩了
// let rain = false;
// rain || console.log('去玩');
// 两个短路运算 逻辑或 和 逻辑与
// 工作中的语法 逻辑与来说 满足了 就去执行
// 工作中的语法 逻辑或来说 不满足了 就去执行
// 逻辑运算的最终结果
// let result = 1 > 0 && 9 > 10; // false
// 那段代码是最后执行即可
// let result = 1 > 0 && 30;
// let result = 1 > 0 && false && 30;
// console.log(result);
// 我们的 undefined 如果 转换成 布尔类型 其实是个false
// 哪一些值转成 布尔类型后 false
// undefined null 0 空字符串 false NaN
console.log(Boolean(undefined));
console.log(Boolean(null));
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(false));
console.log(Boolean(NaN));
console.log(Boolean(''));
</script>
8.运算符优先级
9.三元运算符
<script>
/*
条件 ? 满足条件执行的代码 : 不满足条件 执行的代码
*/
// if 方式 写一写
// let num1 = 10;
// let num2 = 9;
// if (num1 > num2) {
// // console.log('num1 要大于 num2 ');
// console.log(num1);
// } else {
// // console.log('num2 要大于或者等于 num1 ');
// console.log(num2);
// }
// 三元表达式
// num1 > num2 ? console.log(num1) : console.log(num2);
let num1 = 10;
let num2 = 99;
let num3; // 就要等于 num1 和 num2 中 大的值
num3 = ( (num1 > num2) ? num1 : num2);
console.log(num3);
</script>
自己做的三元运算符理解
<script>
let num1 = 10
let num2 = 50
// 三元运算符一般是用来取值:判断条件,num3取num1或者num2的值,谁大取谁
num3 = num1 > num2 ? nun1 : num2
document.write(num3)
</script>
语句
1.if-单分支语句:if(bool值做为条件){操作}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//条件: 颜值99恭喜成为我女朋友
let a = +prompt('请输入你的颜值')
// 判断条件
if (a > 99) {
alert('恭喜成为我女朋友')
}
</script>
</body>
</html>
2.if-双分支语句:if(条件){}else{}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 需求:
条件
存款大于1000万成为有钱人
存款低于1000万成为好人 -->
<script>
// 判断成功执行一,判断失败执行else
let b = +prompt('请输入你的存款')
if (b > 1000) {
alert('恭喜成为有钱人')
} else {
alert('你是一个好人')
}
</script>
</body>
</html>
3.if-多分支语句:if(条件){}else if(条件){} ......else{}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 星期1北京
// 星期2上海
// 星期3广州
// 星期4深圳
// 星期5杭州
// 星期6.7家里蹲
let day = +prompt('请输入星期几')
// 多语句判断:if为开头 中间可以无数个判断 最后else收尾(超过中间范围的值都会执行else); 执行顺序从上到下
if (day === 1) {
console.log("北京");
}
else if (day === 2) {
console.log("上海");
}
else if (day === 3) {
console.log("广州");
}
else if (day === 4) {
console.log("深圳");
}
else if (day === 5) {
console.log("杭州");
}
else {
console.log("家里蹲");
}
</script>
</body>
</html>