整体介绍

表达式和运算符 JS基本表达式 1)算术表达式 2)关系表达式 3)逻辑表达式 4)赋值表达式 5)综合表达式

表达式和运算符

表达式种类

算术表达式

加减乘除

加减的符号和数学一致,乘法是*号,除法是/号 默认情况,乘除法的优先级要高于加法和减法;必要时可以使用圆括号来改变运算的顺序

1+2*3; //7 (1+2)*3; //9 1+2/4; //1.5 ((1+2)*3+4)/2; //6.5

加号两种作用

加号有“加法”和“连字符”两种作用 如果加号两边的操作数都是数字,则为“加法”,否则为连字符 1+2 //3 1+'2'; //'12' '1'+'2'; //'12'

取余运算

取余运算也叫作“求模运算”,用百分号“%”表示 a%b表示求a除以b的余数,它不关心整数部分,只关心余数

隐式类型转换

如果参与数学运算的某操作数不是数字型,那么JavaScript会自动将此操作数转换为数字型 3 * '4' //12

隐式转换的本质是内部调用Number()函数 true+true //2 false + 2 //2 3 * '2天' //NaN

有关IEEE754

在JavaScript中,有些小数的数学运算不是很精准 0.1 + 0.2 //0.30000000000000004

JavaScript使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生“丢失精度”问题 解决办法:在进行小数运算时,要调用数字的toFixed()方法保留指定的小数位数

幂和开根号

JavaScriptr中没有提供幂计算、开根号的运算符。需要使用Math对象的相关方法进行计算。

向上取整和向下取整

Math.ceil()向上取整;Math.floor()向下取整

关系表达式

大于和小于

大于>、小于<两个符号和数学相同 “大于等于”运算符是>=,“小于等于”运算符是

判断是否相等

如果想比较两个值是否相等,此时应该使用==运算符 JavaScript中等号=表示赋值,而并不是相等。判断相等应该使用==运算符 3==3 //true 3===3 //true 3=3 //错误语句

相等和全等

两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等

三个等号===运算符,不仅比较值是否相同,也比较类型是否相同

5 == '5'; //true 5 === '5' //false

NaN不自等

NaN作为一个特殊的数字类型值,它在用==比较的时候也有特殊的结果 NaN==NaN //false NaN===NaN //false

如何判断某变量值为NaN

isNaN()函数可以用来判断变量值是否为NaN isNaN(NaN) //true isNaN(5) //false 但isNaN()也不好用,它的机理是:只要该变量传入Number()的执行结果是NaN,则isNaN()函数都会得到true

isNaN(undefined) //true isNaN('3天') //true isNaN(null) //false

不相等和不全等

!=表示不相等,!==表示不全等 5 != 6 //true 5 != 6 //true 5 != '5' //false 5 !== '5' //true

JS中没有连比

判断变量a是不是介于3到15之间,应该怎么写呢? 3<=a<=15

逻辑表达式

逻辑运算符

非运算

!表示“非”,也可以称为“置反运算” !是一个“单目运算符”,只需要一个操作数 置反运算结果一定是布尔值

对于数字来说,只有0和NaN是负性的,对于字符串来说,只要里面有内容,就一定是正性的 书写两个叹号并非是它本身,而是布尔值

与运算

&&表示“并且”,称为“与运算”,口诀:都真才真

true && true //true true && false //false false && true //false false && false //false

或运算

||表示“或者”,称为”或运算”,口诀:有真就真 true || true //true true || false //true false || true //true false || false //false

短路计算

请思考下面表达式的运算结果 3 && 6

3 && 6 //6 undefined && 15 //undefined 15 && undefined //undefined null && 2 //null '' && 16 //'' NaN && undefined //NaN

3 || 6 //3 0 || 6 //6 null || undefined //undefined 'a' || 'b' //'a' NaN || null //null 上面学的例子其实也遵循短路运算

逻辑运算顺序

逻辑运算的优先级是:非→与→或 !true || true //true 3 && 4 || 5 && 6 //4

赋值表达式

赋值运算符

JS中,=表示赋值,判断是否相等(不判断类型),=判断是否全等 赋值运算符会将等号右边的数值,赋予等号左边的变量

赋值运算也产生值

赋值运算也产生值,等号后面的值将作为“赋值运算的值”

var a; console.log(a 4); //4

这就意味着,可以连续使用赋值运算符 var a,b,c; a=b=c=15; console.log(a); //15 console.log(b); //15 console.log(c); //15

快捷赋值

快捷赋值运算符表示在原数值基础上进一步进行运算 var a = 3; a+=5; //等价于a=a+5 console.log(a); //8

自增/自减运算符

++和—是自增/自减运算符,表示在自身基础上加1或减1

a++和++a的区别

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

综合表达式

综合运算的运算顺序

运算顺序:非运算→数学运算→关系运算→逻辑运算 5 < 3 + 3 // true 3 > 2 && 8 > 3 + 4 // true 3 > 2 && 8 > 3 + 5 //false !13 < 5 - 3 //true !13 < 5 - 5 //false

变量的范围表示

验证变量a是否介于5到12之间

如果a=100,5a12,自左向右运算,a>=5为true,值为1,112,结果正确,所以不符合预期,错误❌

小案例

闰年判断

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

<body>
  <script>
    //要让用户先输入一个年份
    var year=Number(prompt('请输入年份');
    //根据两个条件进行判断(满足这两个条件中的一个,就是闰年):
    //能被4整除,且不能被108整除
    //能被100整除,且能被400整除
    alert((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0));
  </script>
</body>