web学习笔记(十二)
目录
1.运算符
1.1算术运算符
运算符 | 描述 | 实例 |
+ | 加 | 10 + 20 = 30 |
- | 减 | 10-20 = -10 |
* | 乘 | 10*20 = 200 |
/ | 除 | 10/20 = 0.5 |
% | 取余数(取模) | 返回除法的余数9%2 = 1 |
不要直接判断两个浮点数是否相等,浮点数的精确度不如整数。
运算符 | 描述 | 实例 |
++ | 自增(也是一元运算符) | x=++y |
x=y++ | ||
-- | 自减(也是一元运算符) | x=--y |
x=y-- |
- 后置: ?a++ ? ?先赋值,再自增(自减)------先人后己
- 前置: ? ++a ? ?先自增(自减),再赋值。--------先己后人
- 当不参加其他运算,只是自身增加和减小时,前置和后置是一样的,一但参与了其他运算(赋值也算运算)两者就会产生不同的效果。
- 数字是常量没有自增自减,只有变量才有自增自减。
- 开发时,大多使用后置递增/减,并且代码独占一行,例如:num ++;或者num--;
1.2比较运算符(关系运算符)
比较运算符(关系运算符)是比较两个值,比较运算后,会返回布尔值(true / false )作为比较运算的结果。
运算符名称 | 说明 | 案例 | 结果 |
小于号 | 1 < 2 | true | |
> | 大于号 | 1 > 2 | false |
> = | 大于等于号(大于或者等于) | 2>=2 | true |
< = | 小于等于号(小于或者等于) | 3 | false |
== | 双等号(会自动转换数据类型---隐式转换?),只需要数据一样即可 | 37 == 37 | true |
!= | 不等号 | 37 != 37 | false |
=== | 全等要求值和数据类型都一致 | 37 === '37' | false |
1.3赋值运算符
赋值运算符的优先级比较低,不是最低,但低于别的运算符。
运算符名称 | 例子 | 等同于 | 结果 |
= | x=y | x=5 | |
+= | x+=y | x=x+y | x=15 |
-= | x-=y | x=x-y | x=5 |
*= | x*=y | x=x*y | x=50 |
/= | x/=y | x=x/y | x=2 |
%= | x%=y | x=x%y | x=0 |
1.4逻辑运算符
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
运算符名称 | 说明 | 案例 | 结果 |
&&(逻辑与) | and | (x < 10 && y > 1) 为 true | true |
||(逻辑或) | or | (x==5 || y==5) 为 false | false |
!(逻辑非) | not | !(x==y) 为 true | true |
&&逻辑与:
- 运算符两边的操作数两边如果有一个是布尔值,结果不一定是布尔,可能是原值 。
- ?短路逻辑:运算符的两侧的操作数,如果第一个操作数是假,后面不再执行,直接返回第一个操作数结果。 ? ? 如果第一个操作数是真,则由第二个操作数来决定结果。
|| 逻辑或 :
- 如果第一个操作数是真,直接返回第一个操作数的结果。 ? 如果第一个操作数是假,由第二个操作数来决定结果
-
&&优先级高于||
!逻辑非? :就是进行取反操作,如true的相反值是false。
1.5条件运算符
? ? ? ? 格式:? 判断条件??value1;value2 (若判断条件为真则返回value1,否则返回value2)
1.6运算符的优先级
运算符 | 描述 |
. [] () | 字段访问、数组下标、函数调用以及表达式分组 |
++、 --、(++a 优先级小于 a++) ?! 、delete new typeof void | 一元运算符、返回数据类型、对象创建、未定义值 |
* / % | 乘法、除法、取模 |
+ - + | 加法、减法、字符串连接 |
> >>> | 移位 |
< >= instanceof | 小于、小于等于、大于、大于等于、instanceof |
== != === !== | 等于、不等于、严格相等、非严格相等 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
&& | 逻辑与 |
|| | 逻辑或 |
?: | 条件 |
=、?+= 、-= 、*= 、/= 、%= | 赋值、运算赋值 |
, | 多重求值 |
1.7补充
- ?一边数字,一边字符串数字 ?会自动转换数字类型? ?eg:? console.log('5'>15);//false
- ?两边都是字符串 ?比较ascII码,一位一位比较? eg:? ??console.log( '5'>'15');//true
- ??NaN和谁都不相等,和自身都不相等。
- ? ?undefined 除了null和谁都不相等结果都是false
2.流程控制
流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构,这三种结构代表三种代码执行的顺序。
2.1顺序结构:
? ? ? ? ? 顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行, 程序中大多数的代码都是这样执行的。
2.2分支结构:
(1)单分支(if 语句)
? ? 格式:? if(判断条件){
? ? ? ? ? ? ? ? 条件成立,执行的语句。
? ? ? ? ? ? ? ?}
?(2)双分支(if else?语句)
? ? ? 格式: if(判断条件){
? ? ? ? ? ? ? ? 条件成立,执行的语句
? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? 条件不成立,执行的语句
? ? ? ? ? ? ? ?}
let a = +prompt('请输入一个年份');
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
alert(`${a}是闰年`);
} else {
alert(`${a}是平年`);
}
(3)多分支---if else if?语句
? ? ? ? 格式:? ? if(判断条件1){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如判断条件一成立,执行代码块1
? ? ? ? ? ? ? ? ? ? ? ? ? }else if(判断条件2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 条件1不成 立,条件2成立,执行代码块2
? ? ? ? ? ? ? ? ? ? ? ? ? }else if(判断条件3){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 条件1不成立,条件2不成立,条件3成立,执行代码块3
? ? ? ? ? ? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?所有条件都不成立,则执行此代码块
? ? ? ? ? ? ? ? ? ? ? ? ? }
let a=+prompt('请输入您的分数');
if(a>=90){
console.log('A');
}else if(a>=80&&a<90){
console.log('B');
}else if(a>=70&&a<80){
console.log('C');
} else if(a>=60&&a<70){
console.log('D');
}else{
console.log('E');
}
(4)多分支---switch 语句
当要针对变量设置一系列的特定值的选项时,就可以使用 switch。
- switch :开关 转换 , case :小例子 选项
- 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
- 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
- switch 表达式的值会与结构中的 case 的值做比较
- 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
- 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码
注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。
var fruit = prompt('请您输入查询的水果:');
switch (fruit) {
case '苹果':
alert('苹果的价格是 3.5/斤');
break;
case '榴莲':
alert('榴莲的价格是 35/斤');
break;
default:
alert('没有此水果');
}
switch 语句和 if else if 语句的区别
- 一般情况下,它们两个语句可以相互替换
- ?switch...case 语句通常处理 case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
- ?switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
- ?当分支比较少时,if… else语句的执行效率比 switch语句高。
- ?当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!