目录
1.运算符
1.算术运算符
+,-,*,/,%,++,--
2.关系运算符(比较运算符)
只要是使用关系运算符比较出来的结果一定是Boolean
>, <, >=, <=, ==, !=, ===, !==
1. 10 > 5 : true
2. "10" > 5 : true
如果运算符两端有一个操作数是数字的话,那么另外一个也会通过Number()转换成数字,再进行比较
3. "3" > 5 : false
先将'3'转换成数字3,再和5比较
4."10a" > 5 : false
1.先将10a通过Number()转换,结果为NaN
2.使用NaN与5进行比较
NaN与任何数据做!=,结果都是true
NaN与任何数据除了!=,结果都是false
5."10a" < 5 : false
6."张三丰" > "张无忌" :false
比较每位字符的Unicode码
最终比较的是"三"和"无"的大小关系
"三" : 19977
"无" : 26080
7."10" > "5" : false
8."10" < "5" : true
9."50" > "5" : ture
10."49" > "5" : false
=== , !==
"3" == 3 : true
=== : 比较的数据和数据类型必须都相等的情况下,整个结果才为真
"3" === 3 : false
!== : 比较的数据和数据类型只要有一个不相等,结果就为true
"3" !== 3 : true
3.逻辑运算符
判断数字n,是否大于3 小于5
运算符: !, &&, ||
! :等同于 python中的 not
对现有条件取反
非真既假,非假既真
&&:等同于 python中的 and
关联两个条件,起到 并且 的作用
关联的两个条件必须同时都为真的时候,整个结果才为真,否则结果才为假
||:等同于python中的 or
关联两个条件,起到 或者 的作用
关联的连个条件中,只要有一个为true的话,整个结果就为true,只有两个条件同时为false的时候,整个表达式的结果才为false
练习1:
1.创建一个网页
2.从弹窗中录入一个数字,表示年份
3.判断该年份是否是闰年并输出结果(true 或 false)
闰年:能被4整除单不能被100整除或能被400整除的年份都是闰年
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
var year = Number(prompt("请输入一个年份:"));
var isRun = year % 400 == 0 || (year % 100 != 0 && year % 4 == 0);
console.log(year,"是闰年吗?",isRun);
</script>
</body>
</html>
练习2:
从弹框中录入1个字符,判断该字符是英文?中文?数字?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
var input = prompt("请输入一个字符:");
// 判断是否为数字
var isDig = input >= 0 && input <= 9;
console.log("是数字吗?",isDig);
// 判断是否为英文
var isCap = (input >= "a" && input <= "z") || (input >= "A" && input <= "Z");
console.log("是英文吗?",isCap);
// 判断是否为中文
var isCHN = (input >= "\u4e00" && input <= "\u9fa5")
console.log("是中文吗:",isCHN)
</script>
</body>
</html>
4.位运算符
1.按位与: &
3 & 5
3 : 011
5 : 101
=======
001
使用场合:判断一个数字的奇偶性
任意数字与1做按位与操作,结果为1是奇数,结果为0是偶数
5 & 1 4 & 1
5 : 101 4 : 100
1 : 001 1 : 001
======= =======
001 000
2.按位或 : |
5 | 3 :
5 : 101
3 : 011
=======
111
使用场合:任意小数与0做按位或操作,快速取整(抛弃小数位,保留整数位)
3.按位异或 : ^
3 ^ 5 :
3 : 011
5 : 101
=======
110
var a = 3;
var b = 5;
a = a ^ b; // 110
b = b ^ a; // 011
a = a ^ b; // 101
使用场合:在不借助第三方变量的情况下快速交换两个数字的位置
5.条件运算符
单目运算符 / 一元运算符:只有一个操作数的运算符
如: ++,--,!,typeof,-
双目运算符 / 二元运算符:有两个操作符的运算符
如: +,-,*,/,%,&&,||,&,|,^,>,<,...
三目运算符 / 三元运算符:有三个操作数的运算符
如: 条件运算符 ? :
语法:
条件表达式 ? 表达式1 : 表达式2;
先判断条件表达式的结果,如果为true,则执行表达式1的内容,否则,执行表达式2的内容
等同于python中的:
if 条件表达式:
表达式1
else:
表示式2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
var year = prompt("输入年份");
var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
isRun ? console.log(year+'是闰年') : console.log(year+'不是闰年');
var days = isRun ? 366:365; // 如果成立 days=366 不成立 days=365
console.log(days);
</script>
</body>
</html>
练习:BMI指数计算
要求从弹框中录入身高(m)
要求从弹窗中录入体重(kg)
BMI = 体重 / (身高 * 身高);
如果 BMI 小于 18.5 属于 偏瘦
如果 BMI 大于 23.9 属于 偏胖
否则 : 正常
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
var height= prompt("输入身高:");
var weight= prompt("输入体重:");
var BMI = weight / (height * height);
console.log("您的指数为:"+BMI)
BMI < 18.5 ? console.log("偏瘦") :
BMI > 23.9 ? console.log("偏胖") :
console.log("完美身材! ")
</script>
</body>
</html>
6.
ex. 交换 a, b两个变量的值
a ^= b;
b ^= a;
a ^= b;
2.流程控制
1.程序的流程结构
1.顺序结构
2.分支结构(选择结构)
3.循环结构
2.分支结构
1.if结构
1.
if(条件){
语句块;
}
注意:
1.条件不是boolean的话,以下情况视为 false
if(0.0){}
if(0){}
if(""){}
if(undefined){}
if(null){}
if(35.5){真}
if("真帅"){真}
2. if 结构可以省略 {}
如果省略的话,if则只控制它下面的第一条语句
var input = prompt("输入一个数")
if((input & 1) == 1)
console.log(input);
console.log(input); // 此句不受if控制
2.
if(条件){
语句块1
}else{
语句块2
}
3.
if(条件1){
语句块1
}else if(条件2){
语句块2
}else if(条件n){
语句块n
}else{
语句块n+1
}
练习:
分三次从弹框中录入年,月,日
计算该日是该年的第?天
<body>
<script>
var year= prompt("输入年:");
var month= prompt("输入月:");
var day= Number(prompt("输入日:"));
var tota1Days = 0;
var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ;
if(month == 1){
tota1Days = day;
}else if(month == 2){
tota1Days = 31 + day;
}else if(month ==3){
tota1Days = 31 + 28 + day;
}else if(month == 4){
tota1Days = 31 + 28 + 31 + day;
}
if(month > 2){
tota1Days += isRun;
}
console.log("是第"+tota1Days+"天");
</script>
</body>
</html>
2.switch结构
特点:只能用在等值判断的场合
语法:
switch(变量){
case 值1:
语句块1
break; // 可选,跳出switch结构
case 值2:
语句块2
break; // 同上
... ...
default:
语句块n
// 当所有的switch都未匹配上的时候才会执行default
// default 块是可选的
}
注意:
1.变量 和 各个case块后面的值,是采用===的方式来匹配的
2.如果case后面不增加break的话,则从匹配的case块开始向下依次执行(不判断),直到结束或碰到break为止
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
var year= prompt("输入年:");
var month= prompt("输入月:");
var day= Number(prompt("输入日:"));
var tota1Days = 0;
//累加从 month-1月开始到1月份所有的天数
switch(month-1){
case 11:
tota1Days +=30;
case 10:
tota1Days +=31;
case 9:
tota1Days +=30;
case 8:
tota1Days +=31;
case 7:
tota1Days +=31;
case 6:
tota1Days +=30;
case 5:
tota1Days +=31;
case 4:
tota1Days +=30;
case 3:
tota1Days +=31;
case 2:
tota1Days +=28;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
tota1Days +=1;
case 1:
tota1Days +=31;
}
tota1Days +=day;
console.log("该日是该年的第",tota1Days,"天")
</script>
</body>
</html>
3.循环结构
1.循环作用
重复的执行相同或相似的代码
2.循环二要素
1.循环条件
2.循环操作
ex:
1.想打印100遍Hello World
条件:从1开始,到100结束
操作:打印 Hello World
2.想打印1-100之间所有的数字
条件:从1开始,到100结束
操作:打印 条件 的值
3.while循环
1.语法
while(条件){
循环操作
}
2.ex
1.打印九九乘法表中的某一行
从弹框中录入一个数字,录入的是几,就打印第几行
如: 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
var n = Number(prompt("请输入一个数"));
var i = 1;
var show = ' ';
while (i <= n){
show += (i+'*'+n+'='+i*n+'\t');
i++;
}
console.log(show);
</script>
</body>
</html>
4.do...while 循环
1.ex
循环的从弹框中录入数据,并将录入的数据打印在控制台上,直到输入exit为止
2.语法
do{
循环操作
}while(条件);
3.流程
1.先执行循环操作
2.在判断循环条件
3.如果条件为真,则继续执行循环操作,否则退出
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<script>
do{
// 从弹框中录入数据
var input = prompt("输入数据:");
// 将录入的数据打印输出
console.log(input);
}while(input != "exit");//先打印exit 然后才会退出
</script>
</body>
</html>
作业:
分三次输入年,月,日
判断该日是星期?
前提:1900.1.1 是星期一
附加:将该月的日历,打印输出
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var year=prompt("Year:");
var month = Number(prompt("Month:"));
var day = Number(prompt("Day:"));
var totalDays = 0;
//计算从1900年开始到year-1年为止,共有多少天
var i = 1900;
while(i<year){
totalDays += 365;
if(i%4==0&&i%100!=0||i%400==0)
totalDays += 1;
i++;
}
//计算year年的从1月开始到month-1月为止共有多少天,累加到totalDays后面
var i=1;
while(i<month){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
totalDays += 31;
break;
case 4:
case 6:
case 9:
case 11:
totalDays += 30;
break;
case 2:
totalDays += 28;
if(year%4==0&&year%100!=0||year%400==0){
totalDays += 1;
}
}
i++;
}
//累加 day 到 totalDays 的后面
totalDays += day;
// 用totalDays与7取余,结果就是星期几
var date = totalDays % 7;
console.log("星期"+date);
</script>
</body>
</html>