JavaScript基本表达式

5+3 //其中'5+3'是表达式,'5'和'3'是操作数,'+'是运算符

算术表达式

+
-
*
/ 
% 取余(求模)

算术运算的顺序

乘、除、取余——加、减
用圆括号可改变运算顺序

注:加号有两种作用

  1. 两边操作数都是数字,则是加法
  2. 两边操作数存在字符串(不都是数字),则是连字符

幂 开根号

JavaScript未提供幂、开根号的运算符
需使用Math对象的方法进行计算

Math.pow(2, 3) //8
Math.pow(2, -2) //0.25
Math.sqrt(81) //9
Math.sqrt(-81) //NaN

内置构造函数后面会讲,此处了解即可!

向上取整 向下取整

Math.ceil(2.4) //3
Math.floor(2.4) //2
Math.ceil(-2.4) //-2
Math.floor(-2.4) //-3

IEEE754二进制浮点数算术标准

是计算机底层编译标准
在JavaScript中,使用IEEE754个别小数的运算会“丢失精度”

0.1	+ 0.2 //0.30000000000000004
0.3 + 0.4  //0.7

如何解决?
通过调用toFixed()保留指定的小数位数

(0.1 + 0.2).toFixed(2) //'0.30'
Number((0.1 + 0.2).toFixed(2)) //0.3

关系表达式

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

关系运算的结果是布尔值

关系运算的顺序

无特定顺序,从左到右

相等和全等

==比较值但不比较值的类型;
===比较值也比较值的类型/地址

3 = 3 //错误语句
3 == '3' //true
3 === '3' //false
1 == true// true
1 === true //false
0 == false // true
0 === false //false
0 == undefined //false
0 === undefined //false

Undefined和null判等

undefined == null // true
undefined === null // false 

原因在于

typeof null  //object
typeof undefined  //undefined

注:实际上,undefined值派生自null值
ECMAScript标准规定对undefined和null进行相等性测试要返回true

NaN不自等

NaN和undefined判等

NaN和null判等

NaN == NaN //false
NaN === NaN //false
NaN == undefined //false
NaN === undefined //false
NAN == null //true
NAN === null //false

不相等和不全等

 5 != 6 //true
 5 !== 6 //true
 5 != '5' //false
 5 !== '5' //true

JS中不能连比

3<=a<=15//错误写法

逻辑表达式

&&:1101 & 0100,结果是0100,两串联开关,同时关闭电路才通
||:1101 | 0100,结果是1101,两并联开关,同时断开电路才断
!:逻辑取反, false变true,true变false
注:~是按位取反,二进制0变1,1变0

&&
||
!

逻辑运算的结果是布尔值

逻辑运算的顺序

非——与——或

短路运算&&、||

a&&b

a真,表达式值为b;
a假,表达式值为a
原理:
若a真,b真,总结果就真;b假,总结果就假
若a假,不用看b,总结果为假,b被短路

3 && 6      //6
 - 15 && undefined//undefined
 ' ' && 16  //16
 'mukewang' && 16 //16
 true && 16   //16
 undefined && 15 //undefined
 0 && 2       //0
 false && 3    //false
 null && 2    //null
 '' && 16     //''
 NaN && undefined  //NaN

a||b

a真,表达式值为a;
a假,表达式值为b
原理:
若a真,不用看b,总结果为真,b被短路
若a假,b真,总结果就真;b假,总结果就假
应用:
设置函数的默认参数

非运算!

也可称为“置反运算"
属“单目运算符",只需要一个操作数

!ture     //false
!false    //true
!0        //true 
!undefined //true
!''       //true
!'imooc'  //false

特别地,两次取反!!

!!true    //true
!!0       //false
!!''      //false 
!!'imooc' //true

赋值表达式

区分:
=将等号右边的值,赋予等号左边的变量
==比较值但不比较值的类型
===比较值也比较值的类型/地址

赋值运算的顺序

自增、自减——赋值、快捷运算

赋值运算有返回值

等号后面的值将作为“赋值运算的返回值”

var a;
console.log(a = 4);//4,其中a=4是有返回值的,为4

意味着,可连续使用赋值运算符

var a, b, c;
a = b = c = 15;
console.log(a);//15
console.log(b);//15
console.log(c);//15

与算术运算符结合形成快捷运算符

+=
-=
*=
/=
%=

与自增/自减运算符配合使用

a++
a--

a++和++a的区别

a++先用再加
++a先加再用

var a = 3;
var b = a++;
console.log(b);//3
console.log(a);//4

对比

var a = 3;
var b = ++a;
console.log(b);//4
console.log(a);//4

面试题:

var a = 3;
var b = 4;
console.log(a++ + b++ + ++a + ++b);//3+4+5+6=18

综合表达式

综合运算的顺序

非——算术——关系——(除过非运算的)其他逻辑运算

!13 < 5 - 3 && 3 > 2  //true

解析:
1.非,13是真值, 故!13为false
2.数,5 - 3=2
3.关,Number(false)为0,0 < 2, 结果为ture;3 > 2结果为true
4.逻,true && true 结果为true

应用1-判断变量范围

问题:验证变量a是否介于5到12之间?
1.错误写法: 5 <= a <= 12
解析:
关系运算符优先级相同,从左到右验证
假设a=1,5<=1结果为false,Number(false)为0,0<=12结果为true,故最终结果为true
假设a=100,5<=100结果为true,Number(true)为1,1<=12结果为true,故最终结果为true
综上,连等达不到效果
3.正确写法: a >= 5 && a <= 12

应用2-判断闰年

公历闰年的简单计算方法(符合以下条件之一即可)
1.能被4整除且不能被100整除。
2.能被100整除也能被400整除。

var year = Number(prompt('请输入要判断的年份'));// prompt(text,defaultText)其返回值是字符串类型
alert(year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0);

表达式运算顺序的总结

表达式类型顺序
算数乘、除、取余——加、减
关系
逻辑非——与——或
赋值自增、自减——赋值、快捷运算
综合非——算术——关系——(除过非运算的)其他逻辑运算

真假值

何处存在真假值判断

1.条件语句 if、else if
2.循环语句 switch、while、for
3.逻辑运算 && 、|| 、!

真假值判断原则

js中,一般认为有内容或存在的(值或对象,0除外)进行判断时就是真值;
而没有内容或不存在的(“”,undefined,null等等)进行判断时就是假值

常见的真值

所有非0数字(不限于正数、负数、小数)
所有非空字符串(注:空格字符串也为真)
true
函数
能找到的元素
[](注:空数组也为真)
{}(注:空对象也为真)

常见的假值

0、NaN、null、undefined
空字符串
false
不能找到的元素

隐式类型转换

为何需要?当运算符两边数据不统一,CPU无法计算
定义:由编译器自动转换的方式就称为~

转为Number,调用的是Number()

适用情况:算术/关系运算时
1)算术运算符 + - * / %
2)关系运算符 > < >= <= == === != !===
3)自增自减运算符 ++ --
特别地
复杂(引用)数据类型是先转为String再转为Number
在这里插入图片描述

转成String

适用情况:使用连接符+时

转成Boolean

适用情况:需要真假值判断时
1)条件语句 if、else if
2)循环语句 switch、while、for
3)逻辑运算 && 、|| 、!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值