6.运算符
表达式和返回值
表达式:是由数字,运算符,变量等组成的式子
表达式都有一个结果,返回给我们,即返回值
1. 算术运算符:+ - * / %
- 浮点数的运算存在精度问题,不要直接判断两个浮点数是否相等
- 一个数能被整除,用到%(求余数)为0
2..前置自增 和后置自增(要与变量搭配使用)
1.前置自增 先自加,后运算 ++a
2. 后置自增 先原值返回,后自加 a++
3. 前置与后置,单独使用时,执行结果相同,就是a=a+1
但参与运算时,有区别:
var a=10;
var b=a++ +10 //a++ =10 b=20 a=11
var b=++a +10 //++a =11 b=21 a=11
3. 比较运算符 (关系运算符),返回一个布尔值
< > >= <= == != === !===
- == 在比较时,判断两边的值是否相等
可以转型,就是将字符串型转为数字类型
例如:10 == '10' 返回ture - === 在比较时,判断两边的值和数据类型是否相等,不可以转型
例如:10 === '10' 返回 false
4.逻辑运算符
1.逻辑与 && 全真为真
逻辑或 || 全假为假
逻辑非 !
2.短路运算(逻辑中断)
当有多个表达式时,左边的表达式值可以确定就可以确定结果时,就不在继续执行右边的运算了
1.表达式1 && 表达式2
若表达式1的值为真,则返回表达式2
若表达式1的值为假,则返回表达式1
2. 表达式1 || 表达式2
若表达式1的值为真,则返回表达式1
若表达式1的值为假,则返回表达式2
例子:
此时,逻辑运算符两边的表达式是纯数字,肯定是ture
若表达式是表示空或否定时是假, 0 "" null undefined NaN
其余是真
<script>
alert(3>5 && 3>2);//false
alert(3<5 && 3>2);//true
alert(3<5 || 3<2);//true
alert(!2);//false
console.log(123&&456);//456
console.log(123||456); //123
console.log(''&&11); // ''
console.log(0&&11); // 0
console.log(NaN&&11); //NaN
console.log(null&&11); //null
console.log(0 ||11); //11
</script>
5.赋值运算符:
= 从右到左直接赋值
+= -= (也有乘除) a=a+2 a+=2
6.运算优先级:(由高到低)
小括号
一元运算符: ++ -- !
算数运算符: 先 乘 除 % 后 + -
关系运算符: >>= < <=
相等运算符: == != === !===
逻辑运算符: 先&&后||
赋值 运算符:=
7. 流程控制
1. 分支结构
1. if语句
判断闰年的例子
要求:接收用户输入的年份,若是闰年就弹出闰年,否则弹出平年
分析:
能被4整除且不能被100整除的为闰年或者能被400整除的是润年
1,弹出prompt输入框,让用户输入年份,并将此值保存到变量中
2.用if语句来判断
<script>
var year=prompt('请输入年份:');
if(year%4==0 && year%100!=0||year%400==0){
alert('输入的年份是闰年');
}
else{
alert('输入的年份是平年');
}
</script>
</head>
2,if else if 语句,用于多选一
例如判断成绩的级别:
要求接收用户输入的分数,根据分数输出对应的等级字母A, B, C, D,E
其中:
1.90分(含)以上,输出A
2. 80分(含)~90分(不含),输出B
3.70(含)~80(不含),输出C
4.60(含)~ 70(不含),输出D
5.60分(不含)以下,输出E
<script>
var fen=prompt('请输入成绩:');
if(fen>=90){
alert('A');
}此处是由大到小依次判断
else if(fen>=80){
alert('B');
}
else if(fen>=70){
alert('C');
}
else if(fen>=60){
alert('D');
}
else{
alert('D');
}
</script>
</head>
3, 三目运算符组成的式子称为三元表达式:
条件表达式 ? 表达式1 : 表达式2
如果 条件表达式 为真,返回表达式1
如果 条件表达式 为假,返回表达式2
表达式都是有返回值的
var n=10;
var result=n>3 ? "是的" : "不是的" ;
<script>
// 数字补0:用户输入数字若小于10,就在其前面补0,否则,无需补0
var num = prompt('请输入一个0到30的数字:');
var result = num <10 ? '0'+num :num;
alert(result);
</script>
</head>
4. switch语句,多分支语句,实现多选一
- 语法:
switch(表达式){
case value1:
语句1;
break;
case value2:
语句2;
break;
default:
执行最后的语句;
}
利用表达式的值和case后面的选项值进行匹配(两个值相等),若匹配上,就执行;若都没匹配上,就执行
default:
执行最后的语句; - 平时,将switch后面的表达式写成变量;
- 表达式写成变量,变量的值和case里面的值匹配,要求全等,就是值和数据类型要一致
- 若当前的case后面没有break,则不会退出switch,继续执行下一个case
2. 循环结构
1. for循环
- for循环可以重复执行某些相同代码
- for循环可以重复执行些许不同的代码,利用计数器
<script>
for(var i=1;i<=10;i++){
if(i==1){
console.log('你今年一岁了');
}
else{
console.log('你已经'+ i +'岁了');
}
}
</script>
</head>
- for循环可以重复执行某些操作,例如做一些算术运算
求和:
<script>
var s=0;
for(var i=1;i<=10;i++){
s+=i;
}
console.log(s);
</script>
要求:
用户输入班级人数,之后依次输入每个学生的成绩,最后打印出该班级的总成绩和平均成绩
分析:
- 弹出输入框输入总人数num
- 依次输入每个学生的成绩,那 弹出输入框的次数等于总人数,用到for循环,i<=num
- 处理数据
- 弹出结果
<script>
var num=prompt('请输入班级总人数:');
var sum=0;
var average=0;
for(var i=1;i<=num;i++){
var score=prompt('请输入第'+ i +'个学生成绩');
sum=sum+parseFloat(score);
// 因为prompt()的返回的数据是字符串,
// 要转换为数字型,才可以与加号连用,进行加法运算
}
average = sum/num;
alert('总成绩:'+sum );
alert('平均成绩:'+average);
</script>
</head>
4. 双重for循环
<script>
// 当要打印一行星号时:用到字符串的拼接
var num=prompt('请输入星号的个数:');
var str='';
for(var i=1;i<=num;i++){
str+='*';
}
console.log(str);
</script>
当涉及到行和列的,要用到双重for循环,就是循环嵌套
外层循环一次,内层的循环执行全部
- 要求:用户输入行数和列数,打印出星号
<script>
// 当要打印n行n列星号时:用到字符串的拼接
var num1=prompt('请输入行数:');
var num2=prompt('请输入列数:');
var str='';
for(var i=1;i<=num1;i++){
for(var j=1;j<=num2;j++){
str+='*';
}
str+='\n';
}
console.log(str);
</script>
- 要求:打印出10行的倒三角星号
<script>
var str='';
for(var i=1;i<=10;i++){//外层控制行数
for(var j=i;j<=10;j++){//里层打印的个数不同,关键是 个数初始 j = i
str+='*';
}
str+='\n';
}
console.log(str);
</script>
- 打印九九乘法表
<script>
// 分析:
// 1. 共9行,每行个数不同,用双重for循环
// 2. 外层控制行数i,循环9次
// 3.内层控制每行的公式
// 4.关键: 每一行的公式的个数和行数一致,就是j<=i
// 5.要有换行转义字符'\n',发现每个公式列在前,相邻公式间有空袭,所以用'\t'
var str='';
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
str+=j + 'x' + i +'='+ i*j +'\t';
}
str+='\n';
}
console.log(str);
</script>
2.while{}
<script>里面有计数器,同时,有操作表达式来完成计数器的更新
var i = 1;
while (i <= 10) {
console.log('你好');
i++;
}
</script>
3.do{} while()
<script>
var i = 1;
do {
console.log('你好');
i++;
} while(i<=10) //此处没有分号
</script>
do while循环至少执行一次
4. continue关键字 和break
- 遇到continue关键字,退出本次循环,若循环体 continue关键字后面还有语句也不执行了,i++, 进入下一次循环
- 遇到break直接跳出循环,不再进行循环了