JavaScript每日一学 —— 第二天

目录

1.比较运算符

2.数据类型转换

(1)隐式数据类型转换

(2)强制数据类型转换

【1】Number()

【2】String()

【3】Boolean()

3.提取整数和浮点函数

4.逻辑运算符

5.三元运算符(三目运算符)

6.流程控制三大结构

(1)顺序结构

(2)选择(条件)结构

a、if单分支选择结构

b、if else双分支选择结构

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

d.switch多分支结构

(3)循环结构


1.比较运算符

比较运算符:>、<、>=、<=、==、!=、===、!==

(1) =、==、===的区别(面试题)

=:赋值

==:比较,且会默认进行隐式数据类型转换

===:比较,无隐式数据类型转换

(2) !=与!==的区别(面试题)

!=:不等于,不会进行隐式数据类型转换

!==:不全等,即要看类型也要看数值,且默认会进行隐式数据类型转换

2.数据类型转换

(1)隐式数据类型转换

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

第一种情况:

        a.字符串加数字,数字就会转成字符串

        b.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字

        c.乘,除,大于,小于跟减的转换也是一样

console.log(10 + '5')//'105'
console.log(10 - '5')//5
console.log(10 * '5')//50
console.log(10 / '5')//2
console.log(10 > '5')//ture

第二种情况:

        a.undefined等于null

        b.字符串和数字比较时,字符串转数字

        c.数字和布尔比较时,布尔转数字

        d.字符串和布尔比较时,两者转数字

console.log(undefined == null) // true
console.log('5' == 5) // true
console.log(1 == true)//true
console.log(0 == false)//true
console.log('1' + true)//2

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

var str = +'10' + 1
console.log(str)//11

0.1 + 0.2 == 0.3的结果是什么(面试题)

结果为false

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

0.1+0.2=0.30000000000000004

解决方法是:用toFixed(),toFixed() 取小数位,也会进行隐式数据类型转换

console.log((0.1 + 0.2).toFixed(2) == 0.3) // true
(2)强制数据类型转换

强制转换:直接使用方法强行把不同类型的数据转换成相同类型的数据

【1】Number()

把其他类型转换成数值类型

a.把字符串转成数值类型

'10' -> 10        '10元' -> NaN

NaN(not a number):表示在数据类型转换过程中,无法以一个具体的数字来呈现最终的结果,因此返回NaN表示

注意:NaN本身就是一个数值类型,即typeof NaN ->number

          如果把字符串转成数值类型,字符串里面不是纯数字的情况下,转换的结果是NaN

          如果是空字符串或者字符串里面只有空格,那么转成数值类型后,结果是0

b.把布尔类型转成数值类型

true ->1        false -> 0

c.把undefined和null转成数值类型

undefined -> NaN        null -> 0

null == NaN 与 null === NaN 的结果?(面试题)

都是false

NaN表示的不是某个固定的非数字类型,表示的是所有的非数字类型

typeof typeof 10 请问结果是什么?(面试题)

string

console.log(typeof 10) // number
console.log(typeof typeof 10) // string
console.log(typeof 'number') // string

在第三句'number'若不加引号就会被处理成变量,所以引号是必须有的,所以通常判断数据类型会这样写

 console.log(typeof 10 == 'number') // true
 console.log(typeof '10' == 'number') // false
【2】String()

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

a.把数值类型转成字符串类型

10 - > '10'        NaN -> 'NaN'               Infinity -> 'Infinity' (正无穷大)

b.把布尔类型转成字符串类型

true -> 'true'        false -> 'false'

c.把undefined和null类型转成字符串

undefined -> 'undefined'        null -> 'null'

注意:toString() 把其他的类型转成字符串类型

        String()和toString()区别是什么?

        toString()方法可以转换进制,括号里面传递进去的参数是什么,那么就对应转换成进制

        (2、8、10、16进制)

【3】Boolean()

可以把其他的数据类型转成布尔类型

a.把数值类型转成布尔类型

把0和NaN转成布尔值结果是false,其他的都是true

b.把字符串类型转成布尔类型

把空字符串转成布尔类型结果是false,其他的都是true

c.把undefined和null转成布尔类型

把undefined和null转成布尔类型结果都是false

3.提取整数和浮点函数

parseInt():在一个字符串中,从左往右提取整型。如果遇到非整型的内容,则停止提取,并返回结果

parseFloat():在一个字符串中,从左往右提取浮点型。遇到非浮点型,则停止提取,并返回结果

4.逻辑运算符

(1)&& 逻辑与(也可以叫并且)。如果左右两个操作符都为true,则结果为true,否则,结果为false

 逻辑与,就是两个条件同时满足时,结果为true

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

(3)!  取反运算

三者的优先级:! > && > ||

 // 面试题
console.log(1 && 0)//0
console.log(1 && 12)//12
console.log(8+0 && 66)//66
console.log(88 && 1-1)//0
console.log(1 + true && 12-11)//1
console.log(1 - true && 12-11)//0

5.三元运算符(三目运算符)

其实是对双分支选择结构的一种简化形式,不适合多分支选择结构

语法 :       条件 ? 业务代码1 : 业务代码2

6.流程控制三大结构

(1)顺序结构

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

(2)选择(条件)结构

程序根据给定的条件是否成立而选择执行S2操作或S3操作。这种先根据条件做出判断,再决定执行哪一种操作的结构称为分支结构,也称为选择结构

a、if单分支选择结构

只判断true,不判断false

if(条件判断,结果只要两个true或false){

    条件为true,将执行该代码

}

b、if else双分支选择结构

既判断true,又判断false

if(条件判断:结果只有两个true或false){

    条件为true,将执行该代码

}else{

    条件为false,将执行该代码

}

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

if(条件1){

    代码1

}else if(条件2){

    代码2

}else if(条件3){

    代码3

}else{

    如果以上条件都不成立,则执行该代码

}

注意;虽然有多个条件,但各条件之间是"或"的关系。每时每刻,只能有一个条件成立,不能同时满足多个条件

d.switch多分支结构

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

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

 switch(条件判断,通常为变量名){

     case 值:1;

         代码1;

         break;

     case 值:2;

         代码2;

         break;

     case 值:3;

         代码3;

         break;

     default:

         如果以上条件都不满足,则执行该代码

 }

注意:

每个case中的代码执行完毕后,必须用break语句结束,结束之后,程序将跳到switch结束大括号后运行。

如果不写break语句的话,下面的所以的case语句都会执行一遍。

(3)循环结构

见第三天

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值