JavaScript——运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/actionActivity/article/details/89788725

运算符也叫操作符,通过运算符可以对一个或多个值进行计算,并获取运算结果。

例如:typeof 就是一个运算符,可以获得值的类型。它会将值的类型以字符串的形式返回

  • 算数运算符
  • 一元运算符
  • 自增和自减
  • 逻辑运算符
  • 赋值运算符
  • 关系运算符
  • 相等运算符
  • 条件运算符(三元运算符)
  • 运算符的优先级

算数运算符

+、-、*、/、%

var a = 10;   //定义变量 a
var b = 20;	  //定义变量 b
var result;   //定义变量 result 用于接收运算的结果

result = a + b;  //加法运算
console.log("a + b = " + result);

result = a - b;  //减法运算
console.log("a - b = " + result);

result = a * b;  //乘法运算
console.log("a * b = " + result);

result = a / b;  //除法运算
console.log("a / b = " + result);

// 重新为 b 赋值
b = 3;
result = a % b;  // 取余数
console.log("a % b = " + result);

控制台的输出结果:
在这里插入图片描述

注意:

  1. + 加号比较特殊,如果对两个字符串进行加法运算,则会做拼串的操作,就是将字符串拼接成一个字符串,并返回结果
  2. 任何类型的值和字符串做加法运算,都会先转换为字符串,然后再进行运算
  3. 当对 非 Number 类型的值进行运算的时候,会将其转换为 Number,然后再进行运算
  4. 任何值和 NaN做运算结果都是 NaN
// 两个字符串做加法,会拼串
console.log("我是第一个字符串"+"我是第二个字符串");

//任何值和字符串做加法运算
var a = 10;  // Number
var b = "字符串类型";
console.log("Number + String = " + a + b);

a = true;  //Boolean
console.log("Boolean + String = " + a + b);

a = null;  //Null
console.log("Null + String = " + a + b);

a = undefined;  //Undefined
console.log("Undefined + String = " + a + b);

// 非 number 的值进行运算的时候
a = 10;  //为 a 重新赋值
b = true;  //为 b 重新赋值  Boolean
console.log("Number + Boolean = " + (a + b));

b = Null;  //为 b 重新赋值  Null
console.log("Number + Null = " + (a + b));

b = "";  //为 b 重新赋值  空串
console.log("Number + 空串 = " + (a + b));

// 任何值和 NaN 运算
b = NaN;
console.log("Number + NaN = " + (a + b));

a = true;  //Boolean
console.log("Boolean + NaN = " + (a + b));

a = null;  //Null
console.log("Null + NaN = " +  (a + b));

a = undefined;  //Undefined
console.log("Undefined + NaN = " +  (a + b));

控制台的输出结果:
在这里插入图片描述

一元运算符

一元运算符只需要一个操作数
+ 表示正号,不会对值产生任何影响

  • 可以对其他的数据类型使用 + 来将其转换为 number 原理和 Number() 一样。

- 表示负号,可以对数字进行负号的取反

  • 对于非 number 的值,会先转换成 number 然后再运算。
var a = +10; // 正值 a = 10

var b = true;  //Boolean 类型的值
console.log("b的原值为:"+b);  //转换前的输出
b = +true;  //可以使用 + 把值转换成 Number 
console.log("转换后的值为:"+b);  // 转换后的输出

a = -100;  // 设置为负值
console.log("a的值为:" + a);
a = -true;  //先把 true 转换成 number 然后再进行运算
console.log("a的值为:" + a);

控制台的输出结果:
在这里插入图片描述

自增和自减

++

++ 表示自增

  • 通过自增可以使变量在自身的基础上+1
  • 对于一个变量自增以后,原变量的值会立即自增1
  • 自增分2种:后++ a++ 和 先++ ++a
  • 无论是 a++ 还是 ++a 都会立即使原变量的值自增1
    不同的是,a++++a 的值不同
    a++的值等于原变量的值(自增前的值)
    ++a 的值等于新值(自增后的值)
var a = 10;
console.log("a++ 的值为:" + a++ + ",此时 a 的值为:" + a);
a++; //自增 1
console.log("最终 a 的值为:" + a);

a = 10;
console.log("++a 的值为:" + ++a + ",此时 a 的值为:" + a);
++a; //自增 1 
console.log("最终 a 的值为:" + a);

控制台的输出结果:
在这里插入图片描述

- -

-- 表示自减

  • 通过自增可以使变量在自身的基础上-1
  • 对于一个变量自增以后,原变量的值会立即自减1
  • 自减分2种:后-- a-- 和 先-- --a
  • 无论是 a-- 还是 --a 都会立即使原变量的值自减1
    不同的是,a----a 的值不同
    a--的值等于原变量的值(自增前的值)
    --a 的值等于新值(自增后的值)
var a = 10;
console.log("a-- 的值为:" + a-- + ",此时 a 的值为:" + a);
a--; //自减 1
console.log("最终 a 的值为:" + a);

a = 10;
console.log("--a 的值为:" + --a + ",此时 a 的值为:" + a);
--a; //自减 1 
console.log("最终 a 的值为:" + a);

控制台的输出结果:
在这里插入图片描述

逻辑运算符

JS中为我们提供了三种逻辑运算符 && || !

&&

&& 表示与运算,可以对符号两侧的值进行与运算,并返回结果
– 如果两侧的值都是 true,则结果为 true
– 只要有一个值为 false,则结构为 false
– 在 JS 中,&& 表示 短路与,短路与的特点
如果第一个值为 true,则会检查第二个值
如果第一个值为 false 则不会检查第二个值
– 对于非布尔值的情况,会将其转换为布尔值,然后再进行运算,并返回原值
如果第一个值为 true,则必然返回第二个值。
如果第一个值为 false,则直接返回第一个值。

// && 运算 
console.log(true && true);   // true
console.log(true && false);   // false
console.log(false && false);   // false

//非布尔值的情况
console.log(10 && 20);  //true && true 会返回 20
console.log(0 && 20);  //false && true 会返回 0

控制台的输出结果:
在这里插入图片描述

||

||表示或运算,可以对符号两侧的值进行或运算,并返回结果
– 如果符号两侧的表达式的值都 false,结果为 false
– 只要有一个表达式的值为 true,结果就为 true
– JS 中的|| 也是一个短路 ||
如果第一个值为 false,则会检查第二个值。
如果第一个值为 true,则不会检查第二个值。
– 对于非布尔值的情况,会将其转换为布尔值,然后再进行运算,并返回原值
如果第一个值为true,则直接返回第一个值。
如果第一个值为false,则直接返回第二个值。

//  || 运算 
console.log(true || true);   // true
console.log(true || false);   // true
console.log(false || false);   // false

//非布尔值的情况
console.log(10 || 20);  //true && true 会返回 10
console.log(0 || 20);  //false && true 会返回 20

控制台输出的结果:
在这里插入图片描述

! 表示 可以对一个值进行非 运算
– 所谓非运算就是对一个布尔值进行取反操作,就是 true 变 falsefalse 变 true
– 如果对一个值进行两次取反,它不会发生变化。
– 如果对非布尔值进行运算,会先转换成 布尔值,然后再进行非运算。
所以可以利用该特点将其他的数据类型转换成布尔值 !!

console.log(!true);  //false
console.log(!false);  //true

//对于非布尔值的情况
var a = 10;
console.log(!a);  // false

控制台的输出结果:
在这里插入图片描述

赋值运算符

可以将 符号右侧的值 赋值给左侧
=+=-=*=/=%=

var a = 10;
a += 10;  //等价于 a = a + 10;
console.log("a += 10的结果为:" + a);

a = 20;  //重新给 a 赋值
a -= 10;  //等价于 a = a - 10;
console.log("a -= 10的结果为:" + a);

a = 20;  //重新给 a 赋值
a *= 10;  //等价于 a = a * 10;
console.log("a *= 10的结果为:" + a);

a = 20;  //重新给 a 赋值
a /= 10;  //等价于 a = a / 10;
console.log("a /= 10的结果为:" + a);

a = 10;  //重新给 a 赋值
a %= 3;  //等价于 a = a % 3;
console.log("a *= 3的结果为:" + a);

控制台的输出结果:
在这里插入图片描述

关系运算符

> < >= <=

通过关系运算符可以比较两个值之间的大小关系,如果关系成立返回true,否则返回 false
– 对于非数值进行比较时,会将其转换为数字,然后在做比较。
– 任何值和 NaN做任何比较都是 false

   了解内容:
    -- 如果符号两侧的值都是字符串,不会将其转换为数字进行比较,而会分别比较每个字符中的 `Unicode 编码`。比较字符编码时,是一位一位进行比较,如果两位一样,则比较下一位。*可以借用这种方式对英文进行排序。*
    注意:
    -- 比较中文时没有意义。
    -- 比较两个字符串型的字符串时,一定要转型。
var a = 10;
var b = 20;
console.log(a > b);  //false
console.log(a < b);  // true
console.log(a >= b);  //false
console.log(a <= b);  //true

console.log("--------我是分割线---------");

//任何值和 NaN 比较返回的都是 false
console.log(a > NaN);    // false
console.log(true > NaN);// false
console.log(null > NaN);// false
console.log(undefined > NaN);// false

控制台输出的结果:
在这里插入图片描述

相等运算符

用来比较两个值是否相等,如果相等返回 true 否则返回 false

==

使用 == 可以用来两个值是否相等。
当使用 == 来比较两个值的时候,如果值的类型不同,则会先进行类型转换,转换成相同的类型,然后再进行比较。

/* 两个值类型相等的情况 */
var a = 10;
var b = 20;
console.log("a,b的值是否相等:" + (a == b));

/* 两个值的类型不相等的情况 */
var a = 10;
var b = true;
console.log("a,b的值是否相等:"+ (a == b));

控制台的输出结果
在这里插入图片描述
Undefined 衍生自 null,所以这两个值在进行 == 判断时,会返回 true.

console.log(undefined == null);

控制台输出结果
在这里插入图片描述
NaN 不和任何值相等,包括它本身。可以通过 isNaN()函数来判断一个值是否为 NaN,如果该值是 NaN 返回 true,否则返回 false.

console.log(NaN == NaN);   //false
console.log("字符串" == NaN);  //false
console.log(10 == NaN);  //false
console.log(true == NaN);  //false

var a = NaN ;  // 定义一个变量,赋值为 NaN
var result = isNaN(a);  // 使用 isNaN() 函数判断 a的值是不是一个 NaN
console.log("a的值是否为 NaN:"+result);

控制台输出结果
在这里插入图片描述

!=

用来判断两个值是否 不相等 ,如果不相等返回 true,否则返回 false.
!== 在判断的时候,如果两个值的类型不同,也会先转换成相同的数据类型吗,然后再进行比较。

console.log(10 != 20);   // true
console.log("字符串" != 20);   // true
console.log(0 != false);  // false

控制台输出结果
在这里插入图片描述

===

三个等号表示全等,它和==类似,不同的是他不会做自动的类型转换,如果两个值的类型不同,则直接返回 false

console.log(0 == false);  // true
console.log(0 === false);   // false

控制台输出结果
在这里插入图片描述

!==

表示不全等 ,它和 != 类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,则直接返回true.

console.log(0 != false);  // false
console.log(0 !== false);   // true

控制台的输出结果
在这里插入图片描述

条件运算符(三元运算符)

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

条件运算符的执行流程
条件运算符在执行时,首先对条件表达式进行求值,如果该值为 true,则执行语句1 并返回结果,如果该值为 false,则执行语句2 并返回结果。

如果条件表达式是一个 非布尔值,则会先转换为 布尔值,再进行操作。

var a = 11;
console.log(a < 10 ? "a < 10" : "a > 10");

控制台输出结果
在这里插入图片描述

运算符的优先级

和数学一样,在 JS 中运算符也有优先级

例如:
	先乘除后加减

在 JS 中有一个运算符优先级的表
在表中,位置越靠上,优先级就越高,就越先计算。如果优先级一样,则从左往右计算。
如果遇到优先级不清楚的可以使用小括号来改变优先级。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/actionActivity/article/details/89788725