《JavaScript视频2》运算符

运算符

加+ 减- 乘 * 除以/ 取模(余数)%

运算符可以对一个或多个值进行运算,并获取运算结果。

除了加法,当对非Number类型的数据进行运算时,会先将数据转成Number类型再进行运算。可以利用这个性质将数据转换成Number类型。

任何值和NaN进行运算,结果都是NaN

任何值和字符串做加法运算都会先转换为字符串,然后再和字符串做拼接操作。因此我们可以利用这一特性,用加法将任意数据加上一个空字符串,转换成String格式。

var  a = 123;
a = a + "";
result = 1 + 2 + "3";
result = "1" + 2 +3;
console.log("result = " + result);

结果分别是:

result = 33
result = 123

100 - "1";的结果是99
2 * "8" 结果是16
2 * undefined结果是NaN
2 * null结果是0


一元运算符
只需要一个操作数:

  • 正号 +
  • 负号 -
    负号可以对数字进行符号取反,对于非Number类型的值,会将其先转换成Number,然后再符号取反。可以对一个其他的数据类型使用正号 +以实现数据类型的转换。
var result = 1 + + "2" + 3;

结果是6


自增

通过自增可以使变量在自身的基础上增加1

var a = 1;
a++;
++a;

前++和后++
a++这个表达式的值等于原变量的值
++a这个表达式的值等于自增后的值
而二者都会改变a的值

比如:

var d = 20;
var result = d++ + ++d + d;

结果是64

var d = 20;
d = d++;

d的值现在是20,d = d++相当于做了两次赋值运算,第一次是自增,第二次是将自增表达式的值赋值给d。

自减

通过自减,可以使变量在自身基础上减1

a----a道理相同


逻辑运算符

  • &&
  • ||
var b = 10;
b = !b;

此时b变成了Boolean类型的数据,并且值为false,可以将任意数据类型取两次反,将任意数据类型转化为布尔值。

a = !!a;

在JS中,“与"是一种短路的"与”,如果第一个值为false,则立即返回值false,如果第一个值为true,则继续检查第二个值。

var result = false && alert("你看我出不出来");

在JS中,是在表达式中找true,如果找到了就立即返回true

对非布尔值进行""或""运算时,会将其转换为布尔值,然后再运算:

  • 对于"与"运算,如果两个值中有false,则返回靠前的false,如果第一个值为true,则返回第二个值。
  • 对于"或"运算,如果第一个值为true,则直接返回第一个值,如果第一个值为false,则返回第二个值。

比较运算符

当比较运算符的两端不是数字时,先将该值转换成数字再进行比较。

如果两侧的值都是字符串,则不会将其转成数字比较,而是比较两个字符串的Unicode编码,比较字符编码时,是一位一位进行比较,如果两位一样,则比较下一个,直到比出大小。可以借此对英文进行比较。

console.log("11" < "5");

结果是true,因为两侧都是字符串,比较Unicode编码,然后先比较第一位,1的Unicode编码小于5,所以返回true。

在比较两个字符串类型的数字时,一定要将数字转型后进行比较,否则无法比较出正确的结果。

NaN和任何值比较都返回false

  • 在字符串中使用转义字符\n输出Unicode编码:\u四位编码
console.log("\u2620");
  • 在网页中使用Unicode编码:&#编码;(十进制)
<h1>&#9760;</h1>

undefined衍生自null,两者做相等判断返回true

console.log(undefined == null);

NaN不和任何值相等,包括它自己。可以通过isNaN()函数来判断一个值是不是NaN

全等 === ,不全等!==


三元运算符

语法:

条件表达式?语句1:语句2;

在执行时,先对条件表达式进行求值:

  • 如果该值为true,则执行语句1
  • 如果该值为false,则执行语句2

例如,求a和b中的最大值:

var max = a > b ? a:b;

求a、b、c中的最大值:(不推荐使用下面的方法)

var max = a > b ? (a > c ? a : c) : (b > c ? b : c);

运算符的优先级

如果运算符的优先级一样,则从左往右算,如果优先级不一样,则先算优先级高的。如果遇到优先级不清楚的,可以用括号改变优先级。
在这里插入图片描述
比如

var result = 1 || 2 && 3;

结果为1,因为"与"的优先级比"或"的高。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值