JavaScript第二天学习

day02-运算符和分支结构

一、一元运算符

<script>
    //字符串类型,对于字符串类型来说自增或者自减会自动进行类型转换
    var str = '10'
	str++//str = Number(str) + 1 自动转换 从string转为number
	console.log(str);
	str = 'ab'
	str++//NaN 对于转换不成功的string类型数据会变为NaN
	console.log(str)
	//布尔类型
	var bol = false //1为true 0为false
    bol++ //number类型 非0和NaN就是true 自动进行转换
	console.log(bol)
	//null类型
	var no = null
    no-- //自动转换对应boolean类型 然后再从boolean转为number
	console.log(no)
	//undefined类型
	var und
    und-- //undefined转换不成功 NaN
	console.log(und)
	//Number类型
	var num = 10 
    console.log(num++)//10
	console.log(num--)//11
	console.log(++num)//11
	console.log(--num)//10
	console.log(num)//10
	//复杂的自增 自减
	var str1 = '123'
    //Boolean布尔类型转换
    var bool = Boolean (str1)
    console.log(bool--)//1
	console.log(--str1)//122
	//123ab
	var str2 = str1 + 'ab'
    console.log(str2--)//NaN
	//一元运算只能和变量与一起 不能出现其他的运算符
	var num01 = 10
    var bool01 = num01//10
    console.log(num01++);//10
    console.log(num01--);//11
    console.log(bool01++);//10
    console.log(bool01);//11
    console.log(Boolean(bool01));//true
    var yes = 'null' //字符串
    console.log(yes++);//NaN
    console.log(Boolean(yes));//false
    var obj = null
    var bool02 = Boolean(obj)
    console.log(obj--);//0 obj-- === obj=obj-1
    console.log(++bool02);//1
    console.log(obj);//-1
    console.log(Boolean(obj));//true
    //将1进行减减后置 然后转换为boolean类型 再进行++ 最后打印这个number值
    var num03 = 1
    console.log(num03--);//1
    var bool03 = Boolean(num03)
    console.log(bool03);//false
    //进行++ 进行-- 不管++是前置还是后置都是先转换
    var und = null
    console.log(und++); //0 先进行了转换 number
    console.log(typeof und);//null对应是object number类型
</script>

二、比较运算符

比较运算符返回的都是boolean类型,要么是true要么是false

种类

. < > <= >= == === != =(赋值) NaN

== 和 ===

==比较的是值 ===比较的不仅是值还有地址(数据类型)

<script>
  	console.log(null == undefined) //true
	console.log(null === undefined) //false
	console.log(Boolean(null) = Boolean(undefined)) //true
</script>

比较方式

  1. number类型直接比较大小
    <script>
    	console.log(1 < 2)//true
    </script>
  1. number和boolean比较,将boolean转为number(0,1),false = 0,true = 1
<script>
	console.log(true > 3); //false
 	console.log(true == 1); //自动转换是boolean转为number
	console.log(true > false)
</script>
  1. number和string比较
    如果string里面存储的是数值,对应的就是数值比较

如果string里面存储的是string,会自动转为number类型,转不了的话就是NaN

<script>
   console.log(1 > '0') //true
   var a = '1'
   console.log(a > 0)//false,这里string变成NaN
</script>
  1. string之间的比较,比较的是ascii码,记住a是97,A是65
<script>
    var num1 = 'A'
	var num2 = 'a'
	console.log(num1 > num2) //false    
</script>
  1. NaN特性,不能进行比较,返回结果是false
<script>
    var na = Number('ABC')
	console.log(NaN==Number('ABC'));
	console.log(na==NaN);
	console.log(na==na);
</script>
  1. ==比较值 ===比较值得同时还要比较地址
<script>
    var a = '123'//字符串
    var b = 123//number
    console.log(a==b);//true
    console.log(a===b);//false
</script>
  1. null、undefined不会自动转为boolean类型
       <script>
       	console.log(null==false);//null不会自动转为boolean类型
           console.log(undefined==false);//undefined也不会自动转换布尔类型
       </script>

三、逻辑运算符

种类

  1. 与 && 断路与&(不用,全检索一遍,效率变低)
    同true则为true 否则反之
  2. 或|| 断路或|(不用,全检索一遍,效率变低)
    由true则为true 同false则为false
  3. 非!

四、三元运算符 三目运算符

格式

布尔类型表达式?true的结果:false的结果

<script>
    console.log(10?10:20)//10
	console.log(1!=1?10:20);//20
    var number = 1!=1?0:null//null
    console.log(number?'a':'b');//b
    var number2 = 'a'>'B'?12+'3':45/2
    console.log(number2);//123
    console.log(typeof number2);//string
</script>

五、分支机构

if else

可以嵌套但是不建议多重嵌套,因为嵌套的越多时间复杂度越大

<script>
    if(/*布尔类型表达式*/){

        //分支一

    }else{

        //不满足条件的进入此分支

    }
</script>

switch case

有确定的值使用这个,if else适合范围的

break:跳出这个switch块

不存在break的时候从上往下都要执行

switch不支持NaN

<script>
	switch(值表达式){
		case1case2...
		default://默认的
	}
</script>

六、拓展

  1. 2怎么快速变成8
    移位运算 针对2进制的
<script>
   console.log(2<<2) //本来是10 要变成1000 向左边<<进两位
</script>
  1. 1+1 1-1 运行哪个快
    1-1运行快,不用进位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值