1.1 运算符的分类

  1. JavaScript中常用的运算符有:
  2. 算数运算符
  3. 递增和递减运算符
  4. 比较运算符
  5. 逻辑运算符
  6. 赋值运算符

1.2 算数运算符

  • 浮点数的精度问题
    浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。
    1. var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
    2. console.log(0.07 * 100); // 结果不是 7, 而是:7.000000000000001

1.3 递增和递减运算符

  1. **注意**:递增和递减运算符必须和变量配合使用。
  • 递增运算符

    • 前置递增运算符
    • ++num 前置递增,就是自加1,类似于 num = num + 1,但是 ++num 写起来更简单。
    • 使用口诀:先自加,后返回值

      1. var num = 10;
      2. alert(++num + 10); // 21
    • 后置递增运算符

    • num++ 后置递增,就是自加1,类似于 num = num + 1 ,但是 num++ 写起来更简单。
    • 使用口诀:先返回原值,后自加
      1. var num = 10;
      2. alert(10 + num++); // 20

1.4 比较运算符

  • 比较运算符返回值布尔类型
  • 等号比较
  1. console.log(18 == '18');//true
  2. console.log(18 === '18'); //flase 全等要求值和数据类型一致
  1. = //赋值 把右边给左边
  2. == //判等 判断两边值是否相等(有隐式转换)
  3. == //全等 判断两边的值和数据类型是否完全相同

1.5 逻辑运算符

  • 逻辑与&&
    • 两边都是 true才返回 true,否则返回 false
  1. var a = 2 > 1 && 3 > 1;//true
  2. var a = 2 > 1 && 3 < 1;//flase
  1. //如果第一个表达式的值为真,则返回表达式2
  2. console.log( 123 && 456 ); // 456
  3. //如果第一个表达式的值为假,则返回表达式1
  4. console.log( 0 && 456 ); // 0
  • 逻辑或 ||
    • 两边都是 true才返回 true,否则返回 false
  1. var a = 2 > 3 || 1 < 2;//true
  2. var a = 2 > 3 || 1 > 2;//flase
  1. 如果第一个表达式的值为真,则返回表达式1
  2. console.log( 123 || 456 ); // 123
  3. 如果第一个表达式的值为假,则返回表达式2
  4. console.log( 0 || 456 ); // 456
  • 逻辑非 !
    逻辑非(!)也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false

    1. var isOk = !true;
    2. console.log(isOk); // false
  • 短路运算(逻辑中断)
    短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;

  • 逻辑与 &遇到false 就不执行 一假及为假
    ```
  • 如果第一个表达式的值为真,则返回表达式2 ```

  • 如果第一个表达式的值为假,则返回表达式1

  1. console.log( 123 && 456 ); // 456
  2. console.log( 0 && 456 ); // 0
  3. console.log( 123 && 456&& 789 ); // 789
  • 逻辑或
    • 语法: 表达式1 || 表达式2
    • 一真及为真
    • 逻辑或||遇到true 就不执行
  1. 如果第一个表达式的值为真,则返回表达式1
  2. 如果第一个表达式的值为假,则返回表达式2
  1. console.log( 123 || 456 ); // 123
  2. console.log( 0 || 456 ); // 456
  3. console.log( 123 || 456 || 789 ); // 123
  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与比逻辑或优先级高

1.6 赋值运算符

概念:用来把数据赋值给变量的运算符。

  1. var age = 10;
  2. age += 5; // 相当于 age = age + 5;
  3. age -= 5; // 相当于 age = age - 5;
  4. age *= 10; // 相当于 age = age * 10;

2.0 流程控制

2.1 三元表达式

  • 语法结构

    1. 表达式1 ? 表达式2 : 表达式3;
  • 执行思路

    • 如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值
    • 简单理解: 就类似于 if else (双分支) 的简写

2.2 switch分支流程控制

switch小括号里面的值要与case里的值全等

  1. switch( 表达式 ){
  2. case value1:
  3. // 表达式 等于 value1 时要执行的代码
  4. break;
  5. case value2:
  6. // 表达式 等于 value2 时要执行的代码
  7. break;
  8. default:
  9. // 表达式 不等于任何一个 value 时要执行的代码
  10. }
  • 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
  • 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
  • switch 表达式的值会与结构中的 case 的值做比较
  • 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
  • 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码
    注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

2.3 switch 语句和 if else if 语句的区别

  • 一般情况下,它们两个语句可以相互替换
  • switch…case 语句通常处理 case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
  • switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
  • 当分支比较少时,if… else语句的执行效率比 switch语句高。
  • 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。

3.0 数据类型

3.1 数据类型的分类

  • 简单数据类型 (Number,String,Boolean,Undefined,Null)
  • 复杂数据类型 (object)

3.2 数字型 Number

JavaScript 数字类型既可以用来保存整数值,也可以保存小数(浮点数)。

  1. var age = 21; // 整数
  2. var Age = 21.3747; // 小数

数字型进制
最常见的进制有二进制、八进制、十进制、十六进制。

  1. // 1.八进制数字序列范围:0~7
  2. var num1 = 07; // 对应十进制的7
  3. var num2 = 019; // 对应十进制的19
  4. var num3 = 08; // 对应十进制的8
  5. // 2.十六进制数字序列范围:0~9以及A~F
  6. var num = 0xA;

3.3 isNaN

用来判断一个变量是否为非数字的类型,返回 true 或者 false

  1. var usrAge = 21;
  2. var isOk = isNaN(userAge);
  3. console.log(isNum); // false ,21 不是一个非数字
  4. var usrName = "andy";
  5. console.log(isNaN(userName)); // true ,"andy"是一个非数字

3.4 字符串型 String

字符串型可以是引号中的任意文本,其语法为 双引号 “” 和 单引号’’

  1. var strMsg = "奥里给"; // 使用双引号表示字符串
  2. var strMsg2 = '奥里给~'; // 使用单引号表示字符串
  3. // 常见错误
  4. var strMsg3 = 奥里给; // 报错,没使用引号,会被认为是js代码,但js没有这些语法

3.5 字符串转义符

类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。

转义符都是 \ 开头的,常用的转义符及其说明如下:

转义符 解释说明
\n 换行符,n 是 newline 的意思
\ \ 斜杠 \
‘ 单引号
”双引号
\t tab 缩进
\b 空格 ,b 是 blank 的意思

3.6 字符串长度

字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的 length 属性可以获取整个字符串的长度。

  1. var strMsg = "我是!";
  2. alert(strMsg.length); // 显示 3

3.7 字符串拼接

  1. console.log('我' + 18); // 只要有字符就会相连
  2. var age = 18;
  3. console.log('我' + age); // 我18
  4. console.log('我' + age + '岁啦'); // 我18岁啦

+ 号总结口诀:数值相加 ,字符相连

  • 经常会将字符串和变量来拼接,变量可以很方便地修改里面的值
  • 变量是不能添加引号的,因为加引号的变量会变成字符串
  • 如果变量两侧都有字符串拼接,口诀“引引加加 ”,删掉数字,变量写加中间

3.8 布尔型Boolean

布尔类型有两个值:true 和 false ,其中 true 表示真(对),而 false 表示假(错)。

布尔型和数字型相加的时候, true 的值为 1 ,false 的值为 0。

  1. console.log(true + 1); // 2
  2. console.log(false + 1); // 1

3.9 Undefined和 Null

一个声明后没有被赋值的变量会有一个默认值undefined ( 如果进行相连或者相加时,注意结果)

  1. var variable;
  2. console.log(variable); // undefined
  3. console.log('你好' + variable); // 你好undefined
  4. console.log(11 + variable); // NaN
  5. console.log(true + variable); // NaN

一个声明变量给 null 值,里面存的值为空

  1. var vari = null;
  2. console.log('你好' + vari); // 你好null
  3. console.log(11 + vari); // 11
  4. console.log(true + vari); // 1

4.0 数据类型转换

4.1转换为布尔型

  • 代表空、否定的值会被转换为 false ,如 ‘’、0、NaN、null、undefined
  • 其余值都会被转换为 true
    1. console.log(Boolean('')); // false
    2. console.log(Boolean(0)); // false
    3. console.log(Boolean(NaN)); // false
    4. console.log(Boolean(null)); // false
    5. console.log(Boolean(undefined)); // false
    6. console.log(Boolean('小白')); // true
    7. console.log(Boolean(12)); // true

4.2 转换为字符串

  1. toString() String()
  2. alert(num.toString());
  3. alert(String(num));
  4. 还有+号字符串拼接

4.3 转换为数字型

  1. parseInt String()函数//将String转换成整数类型
  2. parseFloat String()函数//将String转换成浮点类型
  3. Number()强制转换函数//将String转换成数值类型
  4. 隐式转换( - * /)//利用算数转换为数字类型