第二天
运算符
1.比较运算符
比较运算符在JS中有这几种
> < >= <= == != === !==
其中> < >= <=跟我们平时理解的一样意思。
== 判断两个数据值相同,如果相同返回ture,否则返回false
!= 判断两个数据值不相同,如果不相同返回ture,否则返回false
console.log(10 == 10); // true
console.log(10 == 20); // false
console.log(10 != 20); // true
console.log(10 != 10); // false
注意点!! 如果字符串之间相互比较,则会比较字符串本身的计算机编码(具体编码可通过百度查询)
=== 为全等号,比较的两个数的值与类型必须完全相同,相同返回ture,否则返回false
console.log(10 == '10'); // true
console.log(10 === '10'); // false
console.log('10' === '10'); // true
!== 为不全等 比较的两个数据,值与类型至少有一方面相同,有一方面相同就返回ture,否则返回false
console.log(10 != '10'); // false
console.log(10 !== '10'); // true
console.log(10 !== 10); // false
小结:
- 进行比较时不会进行类别转换
===比较的值与类型必须完全相同!==比较的值与类型至少有一者不相同- 全字符串的比较,比较的是字符编码
- 比较运算符最终的结果都是布尔值
2.逻辑运算符
逻辑运算符:用于对象多个条件进行逻辑判断
&& 逻辑与
|| 逻辑或
! 逻辑非
逻辑与 && 找假,一假全假
console.log(true && false); //false
console.log(false && true); //false
console.log(true && true); //ture
console.log(false && false); //false
逻辑或|| 找真,一真全真
console.log(true && false); //ture
console.log(false && true); //ture
console.log(true && true); //ture
console.log(false && false); //false
逻辑非! 反着来
console.log(!true); // false
console.log(!false); // true
案例:由用户输入一个整数,判断其是4的整数倍,但不是100整数倍
let n = prompt('请输入一个整数');
console.log(n % 4 == 0 && n % 100 != 0)
案例:由用户输入一个整数,判断即是3的整数倍,又是5整数倍
let n = prompt('请输入一个整数');
console.log(n % 3 == 0 && n % 5 == 0)
3.运算符的优先级
很简单
常理来说,运算符先乘除后加减 在有逻辑非出现的时候,逻辑非优先级别在第一位。 总结来说
- 逻辑非
- 乘除
- 加减
- 比较
- 逻辑与/或
- 赋值
注意点!在实际使用中,添加括号来确保优先级顺序符合实际需求是最好的方法!
4.自增与自减
++为自增符号,意义为变量+1--为自减符号,意义为变量-1- 自增或自减既可以放在变量前,也可以放在变量后。
- 放在变量前,要注意前面是否有赋值需求。
- 对变量本身来说,放在前后都没有影响,都是自增1或自减1 但是在参与其他运算的时候,放在前面,会先自增,在参加运算。放在后面的时候,会先运算,再自增。 例如:
let i = 10; let ret1 = ++i;let j = 10; let ret2 = j++;
- ret1输出的结果为11
- ret2输出的结果为10
这里要注意~,划重点啦~!
分支结构-if分支
1.if分支语法及执行逻辑
题外话:JS中三种结构。
- 顺序结构 普通顺序执行
- 分支结构 含有if分支的结构
- 循环结构 for的循环执行的结构
分支结构
应用场景:需要根据条件来决定某一段代码的执行。 语法:
if(表达式1){
//代码块1
}else if(表达式2){
//代码块2
}...
执行逻辑:
- 自上而下的判断表达式是否成立,如果某个表达式成立就执行相应的代码块。
- 当某个代码块执行结束后,不会再判断其后的表达式,而跳过if结构,继续执行后面的代码
- 如果所有的表达式都不成立,则执行缺省代码块
- 其中
else if结构可以多个也可以不接 else也可以省略
if 单分支
let n = prompt('请输入一个数');
if(n>100){
document.write('yes');
}
if 双分支
let gender = prompt('请输入性别')
if(gender == '男'){
document.write('胜似潘安');
}else if(gender == '女'){
document.write('沉鱼落雁');
}
if 多分支
let gender = prompt('请输入性别')
if(gender == '男'){
document.write('胜似潘安');
}else if(gender == '女'){
document.write('沉鱼落雁');
}else{
document.write('数据不合法');
}
if 分支案例
需求~
-
如果 >=90 输出 优秀 -
如果 >=80 输出 优良 -
如果 >=70 输出 良好 -
如果 >=60 输出 及格 -
如果 <60 输出 不及格
let score = prompt('请输入一个分数');
if(score >= 90){
document.write('优秀');
}else if(score >= 80){
document.write('优良');
}else if(score >= 70){
document.write('良好');
}else if(score >= 60){
document.write('及格');
}else{
document.write('不及格');
}
3.三元运算符
三元运算符实际上是if的一种简写
语法:表达式 ? 语句1 :语句2
执行逻辑:
- 首先判断表达式是否成立
- 成立就选择语句1来执行
- 不成立就选择语句2来执行
let a = 50;
if( a > 100){
document.write('yes')
}else{
document.write('no')
}
等于
a > 100 ? document.write('yes'): document.write('no');
三元运算符就是对if else 双分支的简化
提示:三元运算符结果还可以赋值给变量,例如
let ret = a > 100 ? true : false;
console.log(ret);
三元运算符案例
有a b c三个数,求其中最大数。
let a = 8;
let b = 20;
let c = 100;
let max = a > b ? a : b;
let final = max > c ? max : c;
console.log(final);
布尔类型的转换
1.显示转换
- // Number(数据) 将其他数据类型转换为数值类型
- // String(数据) 将其他数据类型转换为字符串类型
- // Boolean(数据) 将其他数据类型转换为布尔类型
console.log(Boolean(10)); // true
console.log(Boolean(-10)); // true
console.log(Boolean(0)); // false
console.log(Boolean('hello')); // true
console.log(Boolean('')); // false
console.log(Boolean(' ')); // true
console.log(Boolean('0')); // true
只要数据是有意义的都会返回到ture
2.隐式转换
布尔类型的隐式转换
!取反运算符
let a = 10;
console.log(!a); // false
let b = '';
console.log(!b); // true
if 的表达式或 三元运算符 表达式
if(表达式)
表达式 ? 语句1 : 语句2
if(100){
document.write('yes')
}
相当于 if(Boolean(100))
分支结构-switch分支
switch语法
switch(变量){
case 值1:
代码块1
break;
case 值2:
代码块2
break;
case 值3:
代码块3
break;
default:
缺省代码块
}
执行逻辑:
- 根据switch后的变量与case的值匹配情况,将程序转向不同的代码块执行。
- 当代码执行结束后,遇到break就会跳过switch结构,继续后面代码执行
- 当所有的值都不匹配时,执行缺省代码块。
- case结构可以有多个,default也可以省略。
星期案例
let day = +prompt('请输入一个数');
switch(day){
case 1:
document.write('星期一');
break;
case 2:
document.write('星期二');
break;
case 3:
document.write('星期三');
break;
case 4:
document.write('星期四');
break;
case 5:
document.write('星期五');
break;
case 6:
document.write('星期六');
break;
case 7:
document.write('星期日');
break;
default:
document.write('数据不合法');
}
if与switch区别
let score = prompt('请输入一个分数');
if(score >= 90){
document.write('优秀');
}else if(score >= 80){
document.write('优良');
}else if(score >= 70){
document.write('良好');
}else if(score >= 60){
document.write('及格');
}else{
ocument.write('不及格');
}
- if条件常用于表达一个范围
- switch条件一个变量和多个具体指的匹配
- 如果遇到一个变量和多个具体至匹配的情况,推荐使用switch,因为这种情况下switch的效率高于if
计算器案例
// 接收用户输入的第1个数
let n1 = +prompt('请输入第1个数');
// 接收用户输入的第2个数
let n2 = +prompt('请输入第2个数');
// 接收用户输入的所要计算的方式:加 减 乘 除
let op = prompt('请输入所要进行的计算:加 减 乘 除');
let result;
switch(op){
case '加':
result = n1 + n2;
break;
case '减':
result = n1 - n2;
break;
case '乘':
result = n1 * n2;
break;
case '除':
result = n1 / n2;
break;
default:
alert('请输入正确的计算');
}
document.write(result)
switch的穿透
案例说明
// 输出季节
// 12 1 2 冬季
// 3 4 5 春季
// 6 7 8 夏季
// 9 10 11 秋季
let month = 5;
switch(month){
case 12:
case 1:
case 2:
document.write('冬季');
break;
case 3:
case 4:
case 5:
document.write('春季');
break;
case 6:
case 7:
case 8:
document.write('夏季');
break;
case 9:
case 10:
case 11:
document.write('秋季');
break;
default:
document.write('数据不合法');
}
在switch语法中,具有穿透性。可以直接向下执行到break
循环结构 - for循环
for循环结构及逻辑
for循环:重复执行一段代码 for语法:
1.for( 初值 ; 终值 ; 步长){
2.for( 循环控制变量初始化 ; 表达式 ; 循环控制变量修改){
// 循环体代码
// 循环体代码
// 循环体代码
}
执行逻辑:
- 首先执行 定义一个循环控制变量,此步仅执行1次
2.其次开始判断 表达式 是否成立,如果不成立就直接退出整个语法结构,执行后续代码。如果成立就执行语句块(循环体)
3.当语句块(循环体)执行结束后,再执行 循环控制变量修改
4.再来判断表达式是否成立,如果不成立就直接退出整个语法结构,执行后续代码。如果成立就继续循环执行语句块(循环体)
5.重复执行 2 3 4
如:
for(let i=0; i<10; i++){
console.log('hello')
}
执行循环打印出hello直到i<10不满足为止。
循环控制变量的应用及if条件应用
// 对用户输入的10个进行求和
// let sum = 0;
// for(let i=0;i<5;i++){
// let n = +prompt('请输入所要求和的数'); // 10 20 20 10
// sum = sum + n;
// }
// console.log(sum);
// 计算1 至100之间的整数和
let sum = 0;
for(let i=1;i<=100;i++){
sum = sum + i;
}
console.log(sum);
// 使用for循环在页面输出1 行10列的表格
let str = '<table border="1" rules="all" width="500" height="500">';
str +='<tr>'
for(let i=0;i<10;i++){
str +='<td></td>'
}
str +='</tr>'
str += '</table>'
document.write(str);
由用户输入两个数值,如果第1次输入的,比第2次输出的大数值就交换位置
let a =+prompt('1')
let b =+prompt('2')
if (a > b) {
let c = a
a = b
b = c
}
console.log(a, b)
由用户输入10个整数,如果是偶数,就打印出来
for (let i = 0; i < 10; i++){
let a = prompt('用户输入的数据');
if (a % 2 == 0) {
console.log(a)
}
}
判断闰年
由用户输入一个年份,并输出是闰年,还是平年
条件:能被400整除一定是闰年能被4整除不能被100整除。
let year = prompt('请输入一个年份')
if (year % 400 == 0 || year % 4 ==0 && year % 100 != 0) {
alert('闰年')
}else{
alert('平年')
}
数字补0
由用户输入数字,如果输入的是一位数字,则在前面补0
let a =+prompt('请输入一个数字')
if (a < 10 && a > -10) {
a = '0' + a
}
console.log(a)
将用户输入的10个数保存到一个数组中
let A = []
for (let i = 1; i <= 5; i++) {
A[i] = prompt('输入一个数据')
}
document.write(A)
over---------------------