JS的基本数据类型、数据类型转换、运算符、条件分支、循环

一、JS的基本数据类型

JS 把一个变量可以存储的各种各样的数据, 做了一个区分,分成了两个大的类型。
基本数据类型(简单数据类型)和复杂数据类型(地址数据类型/引用数据类型=>Object、Function)

1.Number(数值型)

一切十进制表示的数字;
一切浮点数(小数);
其他进制表示的数字;
      => 十六进制, 以 0x 开头
      => 八进制, 以 0 开头
      => 二进制, 以 0b 开头
科学计数法;
       => 比较大的数字使用科学计数法表示
      => 2e5 2 * 10的5次方
NaN;
       => Not a Number: 非数字

2.String(字符串)

在 JS 里面一切使用引号(双引号, 单引号, 反引号) 包裹的内容都是字符串;
表示一段文本内容, 是一个字符一个字符连接起来的内容;
当你在字符串里面只写数字的时候, 也不是数值类型;
       => 也是字符串类型
在字符串里面, 空格是占位的;

 var s2 = '123'//字符串
console.log(s2)
var n1 = 123//数值
console.log(n1)

3.Boolean(布尔型)

在 JS 里面, 布尔只有两个值
      => true 表示真, 再计算机存储的时候就是 1
       => false 表示假, 再计算机存储的时候就是 0
在运算过程中有什么意义
      => 主要用来做判断
       => 例子:
          ->     a > b 如果得到 true 表示这个表达式时 真的
         ->    a < b 如果得到 false, 表示这个表达式是 假的

4.Null(空值)

Undefined 空
      -> undefined
      -> 这里本该有一个值, 但是没有, 就是 undefined
Null 空
       -> null
       -> 这里有一个值, 有一个空值

5.检测数据类型

检测数据类型
       + 在运算的过程中, 有的数据不是我们自己写的
       + 有可能是通过运算得到的, 有可能是别人给的
       + 为了保证程序的正确运行, 我们需要检测数据变量

  关键字 typeof
    + 两种用法
      1. typeof 变量
        => 语法: typeof 要检测的变量
        => 返回值(结果): 以字符串的形式给你的变量数据类型
      2. typeof(变量)
        => 语法: typeof(要检测的变量)
        => 返回值: 以字符串的形式给你变量的数据类型

    + 两种语法的区别
      1. typeof 只能检测紧跟着的一个变量
      2. typeof() 先运算小括号里面的结果, 然后使用 typeof 去检测结果的数据类型

    + typeof 的返回值
      => 注意: typeof 的返回值是一个字符串
      => 当两个及以上 typeof 连用的时候, 一定得到 string
      => 只能准确的检测基本数据类型
        -> 数值: number
        -> 字符串: string
        -> 布尔: boolean
        -> undefined: undefined
        -> null: object

二、数据类型的转换

1.转数值

  • 把其他数据类型转换为数值类型
  1. Number()
           + 语法: Number(你要转换的数据)
           + 返回值: 转换好的数据
           + 特点:
           => 回把你要转化的内容当作一个整体来看代
              => 能转换成数字结果, 就是数字结果
              => 不能转换成数字结果, 就是 NaN

    1. parseInt()
    + 语法: parseInt(你要转换的数据)
    + 返回值: 转换好的数据
    + 特点:
      => 把你要转换的任何内容一位一位的看
      => 如果第一位就不能转换成数字, 那么直接给 NaN
      => 如果第一位可以, 就看第二位, 第一位保留
      => 以此类推, 直到一个不能转换成合法数字的位置为止
      => 注意: 不认识小数点
    
    1. parseFloat()
    + 语法: parseFloat(你要转换的数据)
    + 返回值: 转换好的数据
    + 特点:
      => 和 parseInt 的解析规则一模一样
      => 只不过多认识一个小数点
    
    1. 取正负值
    + 语法: +变量 或者 -变量
    + 返回值: 转换好的数据结果
    + 特点:
      => 和 Number 的解析规则一模一样
    
    1. 非 加法 的数学运算
    + 语法:
      a * 1
      a - 0
      a / 1
    + 特点:
      => 和 Number 方法解析规则一模一样
    

2.转字符串

  • 把其他数据类型转换成字符串类型

    1. String()
      + 语法: String(你要转换的数据)
      + 返回值: 转换好的数据
      + 特点:
        => 任何数据类型都能转换
    
    2. toString()
      + 语法: 你要转换的数据.toString()
      + 返回值: 转换好的数据
      + 特点:
        => undefined 和 null 不能转换
    
    3. 加法运算
      + 再 JS 里面, 加号(+) 有两个意义
        1. 进行字符串拼接
          => 只要符号任意一边是字符串的时候, 就是字符串拼接
        2. 进行数学运算
          => 只有两边都是数字或者布尔的时候, 会进行数学运算
    
    
    扩展: 报错信息
      Uncaught TypeError: Cannot read property 'toString' of undefined
        => 你的代码里面一定有一个 xxx.yyy
        => 之所以报错, 因为 xxx 是 undefined
      Uncaught TypeError: Cannot read property 'toString' of null
        => 你的代码里面一定有一个 xxx.yyy
        => 之所以报错, 因为 xxx 是 null
    

3.转布尔

  • 把其他数据类型转换成布尔数据类型

    1. Boolean()
      + 语法: Boolean(你要转换的数据)
      + 返回值: 转换好的数据
      + 特点:
        => 再 JS 里面只有五个内容转换成 false
          -> 0
          -> 空字符串('')
          -> NaN
          -> undefined
          -> null
        => 其他所有内容转换完毕都是 true
    

三、运算符

1.数学运算符

  • 进行数学运算的符号

    1. “+”
      => 有两个含义
      => 字符串拼接
      => 数学运算
    2. “-”
    3. “*”
    4. “/”
    5. “%”
      => 取两个数字的余数
      => 被除数 / 除数 = 商 … 余数
      => 得到不能被整除的部分
      3 % 10 得到 3
      10 % 3 得到 1
    6. 取幂
      => a ** b 就是 a 的 b次方

2.赋值运算符

  • 进行数据赋值的符号

    1. =
      赋值: 把等于号右边的给到左边的变量
    2. +=
      加法和赋值的合作
      a += b 等价于 a = a + b
      再自己的基础上进行叠加
    3. *=
      乘法和赋值的合作
      a *= b 等价于 a = a * b
      再自己的基础上进行累积
    4. /=
    5. %=
    6. -=

3.比较运算符

两个数据进行比较的符号
1. “>”
左边大于右边, 得到 true
左边不大于右边, 得到 false
2. <
左边小于右边, 得到 true
左边不小于右边, 得到 false
3. >=
左边大于或者等于右边, 得到 true
左边小于右边, 得到 false
4. <=
左边小于或者等于右边, 得到 true
左边大于右边, 得到 false
5. ==
比较两边的数据值是不是相等, 不管数据类型
6. ===
比较两边的数据是不是相等, 值和数据类型都要比较
7. !=
比较两边的数据值是不是不等, 不管数据类型
8. !==
比较两边的数据是不是不等, 值和数据类型都要比较
当数据类型不一样的时候, 就是 true

4.逻辑运算符

对数据进行逻辑运算
1. && 与(且)
运算符两侧都是 true 的时候, 得到 true
只要任意一边是 false, 得到的结果就是 false
2. || 或
运算符两侧有任意一边是 true, 得到结果就是 true
只有两边都是 false 的时候, 得到的结果才是 false
3. ! 非(取反)
本身是 true, 结果就是 false
本身是 false, 结果就是 true
双取反可以转布尔

5.自增自减运算符

是一元运算符的一种
一元: 一个符号带一个变量就能运算
   => +变量
   => -变量
   => !变量
自增 ++
   => 前置++
        -> ++变量
   => 后置++
        -> 变量++
   => 共同点
        -> 只要执行了, 那么变量本身一定会改变(再自身的基础上 +1)
   => 区别: 在于参与运算的时候
       -> 前置++ 再参与运算的时候, 先改变变量本身的值, 用改变以后的去进行运算
       -> 后置++ 再参与运算的时候, 先把变量本身的值拿过来参与运算, 然后再改变变量的值
   => 当一个运算表达式出现多个 ++ 的时候
       -> 按照从左到右的顺序依次一个一个的执行
自减 - -
   => 前置–
       -> --变量
   => 后置–
       -> 变量–
   => 共同点
       -> 只要执行了, 那么变量本身的值一定会改变(在自身的基础上 -1)
   => 区别: 再参与运算的时候
       -> 前置-- 再参与运算的时候, 先改变变量的值, 用改变以后的值参与运算
       -> 后置-- 再参与运算的时候, 先把变量本身的值拿过来参与运算, 然后再改变变量的值

四、条件分支语句

  • 根据一个条件来决定是不是执行某一段代码
    + 分成两种
    1. if
    2. switch

1.if语句

四种书写方式
1-1. if (条件) { 要执行的代码 }
   => 当条件满足(表达式位 true)的时候, {} 里面的代码执行
    => 当条件不满足(表达式为 false)的时候, {} 里面的代码不执行
1-2. if (条件) { 要执行的代码 } else { 要执行的代码 }
   => 当条件满足的时候, 执行 if 后面的 {}
   => 当条件不满足的时候, 执行 else 后面的 {}
    => 两个代码段必然会执行一个
1-3. if (条件1) { 条件1要执行的代码 } else if (条件2) { 条件2要执行的代码 }
   => 从第一个开始, 那一个条件满足, 执行哪一个 {} 里面的代码
    => 如果前面的满足了, 那么后面的就都不执行了
    => 若干个大括号, 最多只能执行一个
1-4. if (条件1) { 条件1要执行的代码 } else if (条件2) { 条件2要执行的代码 } else { 所有条件都不满足的时候执行的代码 }
    => 从第一个开始, 哪一个满足条件, 执行哪一个 {} 里面的代码
   => 前面的满足了, 后面的就都不执行了
   => 所有条件都不满足的时候, 执行 else 里面的代码
   => 若干个 {}, 必然会有一个执行

2.switch语句

条件分支语句的一种
+ 语法: switch (要判断的变量) {
   case 情况1:
     情况1执行的代码
     break
   case 情况2:
     情况2执行的代码
     break
   default:
     所有条件都不满足的时候执行的代码
}
+ 注意:
1. 我们的每一个 case 和判断的变量的关系必须是 === 才叫做满足
2. switch 语句, 只能判断准确的某一个字面量值, 不能判断范围
3. 每一个 case 后面的 break
   => 当你书写 break 的时候, 执行完毕这个 case 内容, 就结束了
   => 当你不写 break 的时候, 执行完毕这个 case, 不管下一个 case 是不是满足, 都会执行
   => 一直到遇到一个 break 为止, 或者到 switch 结束
4. break 的穿透, 是从第一个满足条件的 case 开始进行穿透
5. default 可以写可以不写
   => 作用类似于我们 if 语句里面的 else
   => 当所有条件都不满足的时候, 执行 default

五、循环控制语句

1.while

  • 分支: 根据条件来决定是不是执行某一段代码
    + 循环: 根据条件来决定一段代码重复执行多少次

    循环成立的条件
      1. 初始值, 作为循环的开始
      2. 条件判断, 决定要不要继续循环
      3. 要重复执行的代码
      4. 改变初始值, 为了让循环有结束
    
    while 循环的过程
      1 234 234 234 ... 2
    
    while 循环的语法
      var n = 1
      while (条件) {
        重复执行的代码
    
        n = n + 1
      }
    

2.do…while

  • 也是我们循环语句的一种

      + 语法
       do {
         要重复执行的代码
       } while (条件)
     + 和 while 循环的区别
       => 不管条件是不是成立, 都先执行一遍
       => 只在第一次条件就不成立的时候会有区别
    

3.for

  • 循环结构语句 - for
  •   + 第一: 将来的应用是最多的
      + 第二: 书写很诡异(代码糖)
        => 代码糖: 用起来方便, 写起来方便, 看起来不方便
      + 语法:
        for ( var i = 0; i < 10; i++ ) { 重复执行的代码 }
      + 标准语法:
        var i = 0
        for ( ; i < 10; ) {
          重复执行的代码
          i++
        }
    

4.break

循环控制语句 - break

    + 当你在一个循环里面执行到 break 关键字得时候
    + 会直接结束整个循环

5.continue

循环控制语句 - continue

    + 使用在循环里面得关键字
    + 当代码执行到 continue 关键字得时候, 会结束循环得本次, 继续下一次

6.JS标记语法

循环控制语句 - JS 标记语法

    + break 关键字可以跳出循环, 但是是跳出当前循环
    + 标记语法, 你自己做一个记号, 你向跳到哪里跳到哪里
    + 直接在循环得开始位置做一个 标记
      名字:
    + 当你准备跳出得时候
      break 标记
      直接跳转到标记代表得循环结束位
here:
    for (var i = 1; i <= 5; i++) {
    
    

      for (var j = 1; j <= 3; j++) {
    
    

        if (i === 3 && j === 2) {
    
    
          console.log('看到半条虫子')
          break here
        }

        console.log('吃的第 ' + i + ' 个包子得第 ' + j + ' 口')

      }

      console.log('=================')

    }

猜你喜欢

转载自blog.csdn.net/qq_48937489/article/details/121082195