js-day02

97 阅读5分钟

比较运算符

>、<、>=、<=、==、!=、===

注意:

==两个等号在比较数据是否相等的时候,还会进行隐式数据类型转换(就是js自动给你转成相同的类型来进行比较。
=== 值和类型都要进行比较,如果有一个不相等,那么就返回false

问:=,==(等于),===(绝对等于)区别是什么?

=是赋值,==,与===参考上面

问:!=(不等于),!==(完全不等于)区别是什么

和==,===同理

强制数据类型转换

转数值 Number()
  • 注意1:number是数据类型 Number()强制数据类型转换
  • 注意2: NaN本身就是一个数值
  • 注意3:非纯数字转数值类型结果为NaN
  • 注意4: 空字符串或只有空格字符串转数值类型结果为0
  • 注意5:boolean类型转数值false为0,true为1
  • 注意6:undefined转数值为NaN,null转数值为0
问:NaN == NaN 和 NaN === NaN 它的结果分别是什么?

NaN不是一个固定的数值,不是由相同非数字转过来的,表示所有非数字类型,输出NaN == NaN 和 NaN === NaN 它的结果分别false false

问:typeof typeof 10 请问结果是什么?
 console.log(typeof 10 == 'number') //结果 true
 console.log(typeof typeof 10) //结果为 string
转字符串 String()

var 声明的值要覆盖后面的,要分开写

   var data = Infinify  //Infinify表示无穷大
   var res = String(data)


   var data = false
   var res = String(data)
   
   var data = undefined
    // var data = null
    var res = String(data)

还有一个toString()方法:可以先进行进制转换

      var num = 10
    // var res = num.toString(2) // 1010
    // var res = num.toString(8) // 12
    var res = num.toString(16) // a
转布尔 Boolean()
  • 注意1:把0和NaN转成布尔值结果是false,其他的都是true
  • 注意2:把空字符串转成布尔类型结果是false
  • 注意3:把undefined和null转成布尔类型结果都是false

隐式数据类型转换

概念:JS会根据运算符自动帮我们将数据类型转换成能够进行计算的类型

第一种情况:

1.字符串数字,数字就会转成字符串
2.数字字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字
3.乘,除,大于,小于跟减的转换也是一样

第二种情况:

1.undefined等于null
2.字符串和数字比较时,字符串转数字
3.数字和布尔比较时,布尔转数字
4.字符串和布尔比较时,两者转数字

注意:如果把加号放在字符串前面,那么会默认把字符串转成数值类型

问:0.1 + 0.2 = 0.3 对吗

不对,存在计算精度问题:因为二进制在保存小数的时候存在精度丢失的问题,对于有些小数存储来说(有时候是多的,有时候是缺少的

console.log(0.1 + 0.2) // 结果 0.30000000000000004

这时候要用toFixed() 取小数位,也会进行隐式数据类型转换

console.log((0.1 + 0.2).toFixed(2) == 0.3) // true

提取整数和浮点数

  • parseInt() 提取整数,如果遇到非整数的时候会停止,会默认进行数据类型转换
  • parseFloat() 提取浮点型,如果遇到非浮点型的时候会停止,会默认进行数据类型转换

逻辑运算符

声明下逻辑运算符的运算结果有两个:true或false

  1. && 逻辑与(也可以叫并且)。如果左右两个操作符都为true,则结果为true,否则,结果为false,逻辑与,就是两个条件同时满足时,结果为true

  2. || 逻辑或。左右两个条件,只要一个满足,就返回true,否则,就返回false

  3. ! 取反运算

流程控制三大结构

顺序结构

按照程序的书写顺序,一条一条语句执行,不允许跳过任何一条语句

选择(条件)结构

这种先根据条件做出判断,再决定执行哪一种操作的结构称为分支结构,也称为选择结构

a、if单分支选择结构: if条件判断----只判断true,不判断false

        if() {//圆括号里面条件判断,结果只要两个true或false
        //大括号中,是条件为true时,将执行的程序代码
        }

自己练习一下

b、if else双分支选择结构:

语法结构-----既判断true,又判断false

if(条件判断:结果只有两个truefalse)
{
    条件为true,将执行该代码
}else
{
    条件为false,将执行该代码
}

自己练一下

c、if else if多分支选择结构:

语法结构——多条件判断
if(条件1)
{
    代码1
}else if(条件2)
{
    代码2
}else if(条件3)
{
    代码3
}else
{
    如果以上条件都不成立,则执行该代码
}
三元运算符

语法:

? : 也叫三目运算符

语法:条件表达式?结果1:结果2

语法:操作数1?操作数2:操作数3

switch多分支结构

描述:根据一个变量的不同取值,来执行不同的代码。

注意事项:case在进行值比较时,是以全等于来比较匹配的。

 switch(条件判断)
 {
     case 值:1;
         代码1;
         break;
     case 值:2;
         代码2;
         break;
     case 值:3;
         代码3;
         break;
     default:
         如果以上条件都不满足,则执行该代码
 }

switch、case、break、default都是系统关键字,都必须全小写

注意: 每个case中的代码执行完毕后,必须用break语句结束。如果不写break语句的话,下面的所以的case语句都会执行一遍。

自己练一下