内容:

运算符及表达式

流程控制-分支结构

运算符及表达式

运算符即让数据进行运算的符号,数据及运算符构成的式子称为表达式,广义上所有能返回某个值的语句都可称为表达式 如变量,字面量,函数调用 等

算术

问题:

1 有哪几种算术运算符?+-*/%

2 思考:如何证明一个数是偶数? n%2==0

  1. + - *(乘) /(除) %(求余) 算术运算符 算术表达式 计算所得的结果即为算术表达式的值
  2. 注意:小数与小数作算术运算会有误差(原因;计算机内数据底层为二进制表示),因此小数算术运算后得到的结果和另一个值做比较运算时 可能会出问题
  3. 0.1+0.2==0.3 // false
  4. 5%8 //5
  5. 10%3 //1

自增自减 *

问题:

1 a 和 a有何异同?相同点:都能让变量自增1 不同点:表达式的值不同a的值即为a+1 a的值为a

  1. //a++ ++a均可使变量自增1,区别在于a++表达式的值为a的初始值 ++a表达式的值为a+1之后的值,a-- --a同理
  2. var a=0;
  3. console.log(a++);//输出0,a变成1
  4. console.log(++a);//输出2,a变成2

比较(关系)

问题:

1 比较运算符计算后的到的结果是什么数据类型?

2 ==和=有何区别?

  1. //比较表达式的值均为true或false
  2. 表达式1==表达式2 相等(只比较 值,不要求数据类型一致)
  3. 表达式1!=表达式2 不等(只比较 值,不要求数据类型一致,值不相等时返回true,否则返回false)
  4. 表达式1===表达式2 全等(同时比较值和数据类型,仅当两者均相等时结果才为true)
  5. 表达式1!==表达式2 不全等(同时比较值和数据类型,两者有一个不相等时结果即为true)
  6. > < >= <=
  7. '12'> '2' //false 两个字符串作比较时 按字典排序规则 比较
  8. '12'>2 //true 字符串和数字比较时 会发生隐式转换,将字符串转化为数字 来比较

逻辑

问题:

1 有哪几种逻辑运算符?计算规则分别是?

2 逻辑与中断何时发生?

3 逻辑或中断何时发生?

  1. 与:&& 或:|| 非:!
  2. 表达式1 && 表达式2 构成逻辑与表达式,只要表达式1/2中有一个为false,则整个逻辑表达式的值为false,仅当表达式1/2均为true时,逻辑表达式的值才为true
  3. 表达式1 || 表达式2 构成逻辑或表达式,只要表达式1/2中有一个为true,则整个逻辑表达式的值为true,仅当表达式1/2均为false时,逻辑表达式的值才为false
  4. !表达式 构成逻辑非表达式 表达式值为true时,整个逻辑非表达式的值为false,反之为true
  5. 逻辑表达式短路现象
  6. 表达式1 && 表达式2 当表达式1false时(整个逻辑表达式的值已确定),表达式2不会执行
  7. 表达式1 || 表达式2 当表达式1true时(整个逻辑表达式的值已确定),表达式2不会执行
  8. 3&&1 //1
  9. 0&&100&&1000 //0
  10. 1||10000 //1
  11. 0||0.5 //0.5
  12. var a=9,b;
  13. (a<10)&&(b=a);
  14. console.log('b的值为'+b) //9
  15. var a=9,b;
  16. (a>=10)&&(b=a);
  17. console.log('b的值为'+b) // undefined

赋值

问题:

赋值运算符得到的结果是什么?

  1. = a=2 // 将2赋值给变量a,赋值运算符 对应 赋值表达式 赋给变量的值即为赋值表达式的值
  2. += a+=2 // 相当于a=a+2
  3. -= a-=2 // 相当于a=a-2
  4. *= a*=2 // 相当于a=a*2
  5. /= a/=5 // 相当于a=a/5
  6. %= a%=3 // 相当于a=a%3
  7. //a+=1 与 a++的区别:
  8. var a='1';
  9. a+=1 a=a+1 完全一致 赋值结束后a'11'
  10. a++ 赋值结束后a2

条件

  1. 表达式1?表达式2:表达式3 //当表达式1为true时,执行表达式2且表达式2的值为三元表达式整体的值,否则执行表达式3且表达式3的值为整体三元表达式的值,当if...else...中代码较简单时,可用三元表达式实现
  2. var a = 2,b = 3;
  3. var c = a>b?a-b:b-a;
  4. console.log(c)//1

逗号运算符(了解)

  1. 表达式1,表达式2 构成逗号表达式 值为 最后一个表达式的值

位运算(了解)

  1. & 按位与
  2. | 按位或
  3. >> 右移位
  4. << 左移位

运算符优先级

  1. ()>一元(! ++ --)>算术>关系(比较)>逻辑>条件>赋值>逗号
  2. //注意:关系运算符中==及===相对而言优先级更低 逻辑运算符中 &&优先级高于||

流程控制-分支结构

概念

通过某些语句控制代码的执行顺序即称为流程控制,三种流程控制结构:顺序(默认),分支,循环

if 语句

  1. 基本用法:
  2. if(表达式){
  3. 语句 //当()中表达式为true时执行 语句,否则不执行
  4. }
  5. 双分支:
  6. if(表达式){
  7. 语句1 // 当()中表达式为true时执行语句1
  8. }else{
  9. 语句2 // 否则执行语句2
  10. }
  11. 多分支
  12. if(表达式1){
  13. 语句1 // 表达式1为true时执行语句1
  14. }else if(表达式2){
  15. 语句2 // 表达式2为true时执行语句2
  16. }else if(表达式3){
  17. 语句3 // 表达式3为true时执行语句3
  18. }
  19. ...
  20. else{
  21. 语句n // 上述表达式都为false时执行语句n,else也可省略,若省略则可能所有分支都不执行
  22. }

三元表达式

  1. 格式:表达式1?表达式2:表达式3
  2. 说明:当表达式1true时,三元表达式的值 为表达式2的值,否则为表达式3的值
  3. var a = 10;
  4. var x = a>=10?a-1:a+1;
  5. console.log(x) // 9
  6. // 用户输入0~59之间的一个数字
  7. // 如果数字小于10,则在这个数字前面补0,(加0 拼接) 否则 不做操作
  8. // 用一个变量接受这个返回值,输出
  9. var time = prompt('请您输入一个 0 ~ 59 之间的一个数字');
  10. // 三元表达式 表达式 ? 表达式1 :表达式2
  11. var result = time < 10 ? '0' + time : time; // 把返回值赋值给一个变量
  12. alert(result);

switch语句

  1. //switch是多分支语句的另一种写法
  2. switch(表达式){
  3. case 1:语句1;break;
  4. case 2:语句2;break;
  5. ...
  6. default:默认执行语句;
  7. }
  8. //注意:
  9. //switch后()中表达式与case后面的值 按 全等===匹配,需要注意数据类型一致
  10. //switch 中break起跳出switch结构的作用。可省略,若省略,则匹配到的case语句执行完后会继续执行下面的语句,直到遇到break或执行完所有case才会跳出switch结构。
  11. //switch与if...else if...结构比较:
  12. //switch语句适用于多分支判断条件为等于 某个具体的值 时,if...else if...适用于于分支判断条件为 在某个范围时,总体上if...else if应用范围更广,能用switch实现的都能用if...else if...实现
  13. //当判断条件为等于某些具体的值,且分支较多时用switch结构更清晰,且效率更高