乐趣区

关于typescript:TypeScript-运算符

本节咱们来讲 TypeScript 中的运算符的应用,运算符咱们应该都晓得,数学中咱们也学过运算符,例如常见的加减乘除等。而计算机语言中的运算符,用于执行程序代码运算,会针对一个以上操作数我的项目来进行运算,例如 1 + 2,其中 + 就是一个运算符,而 1、2 则是操作数。TypeScript 中的运算符就大抵和 JavaScript 中一样。

TypeScript 中的运算符能够大抵分为以下几种:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 按位运算符
  • 赋值运算符
  • 三元运算符
  • 类型运算符

算术运算符

算术运算符以数值(字面量或变量)作为其操作数,并返回一个单个数值。包含上面几种:

运算符 形容
+ 加法,返回操作数的总和
减法,返回操作数的差
* 乘法,返回操作数的乘积
/ 除法,返回操作数的商
% 取模(余数),返回操作数的余数
++ 自增,将操作数加 1
自减,将操作数减 1
示例:

上述的算术运算符中,最简略的就是 +-*/ 这四个运算符:

console.log(1 + 3);  // 4
console.log(5 - 2);  // 3
console.log(3 * 7);  // 21
console.log(6 / 2);  // 3

取模运算符 % 用于求操作数的余,余数就是当操作数不能整除时,就会产生余数。如果能够整数则会返回 0:

console.log(6 % 2);  // 0
console.log(7 % 4);  // 3
console.log(9 % 2);  // 1

递增运算符 ++ 和递加运算符 -- 在理论利用中也会常常用到,这两个运算符应用办法都一样,区别在于一个用于将操作数加一,一个用于减一。咱们应用 ++ 来举例:

let a:number = 1;
console.log(a);   // 1
console.log(a++); // 1
console.log(a);   // 2
console.log(++a); // 3
console.log(a);   // 3

上述代码中,咱们能够看到:

  • ++ 后置时,即位于操作数的前面,会在 递增前 返回数值。
  • ++ 前置时,即位于操作数的后面,会在 递增后 返回数值。

关系运算符

关系运算符用于计算结果是否为 true 或者 false。关系运算符有 6 种,如下所示:

运算符 形容
> 大于
< 小于
>= 大于或等于
<= 小于或等于
== 等于
!= 不等于
示例:

申明两个数字类型的变量,而后应用不同的关系运算符对这两个变量进行计算,返回计算结果:

let a:number = 3;
let b:number = 7;
console.log(a < b);  // true 

console.log(a > b);  // false

console.log(a <= b); // true

console.log(a >= b); // false

console.log(a == b); // false

console.log(a != b); // true

逻辑运算符

逻辑运算符用于组合两个或多个条件。返回值为 true 或者 false

运算符 形容
&& 与,仅当指定的所有表达式都返回 true 时,运算符才返回 true
\ \ 或,如果指定的表达式至多有一个返回 true,则运算符返回 true
非,运算符返回相同的表达式后果
示例:

咱们来看上面这段代码:

let a:number = 3;
let b:number = 7;

console.log(a > 1 && b > 1);     
console.log(a == 3 || b == 3);  
console.log(!a);   

编译成 JavaScript 代码:

var a = 3;
var b = 7;
console.log(a > 1 && b > 1); 
console.log(a == 3 || b == 3); 
console.log(!a); 

输入:

true
true
false

其实从这三个运算符的名字就能够看出它们的不同,与运算符 && 须要所有的表达式都为 true 才返回 true。上述代码中,a > 1 的后果为 true,b > 1 的后果也为 true,所以最终 a > 1 && b > 1 的返回后果为 true。

而或运算符|| 只有有一个表达式为 true 后果就会返回 truea == 3 为 true,b == 3 为 false,有一个满足,所以最终也返回 true

非运算符 则返回表达式相同的后果,a 的值为 3,所以是一个真值,取反后失去 false。

按位运算符

位操作是程序设计中对位模式按位或二进制数的一元和二元操作。

运算符 形容
& 按位与,解决两个长度雷同的二进制数,两个相应的二进位都为 1,该位的后果值才为 1,否则为 0
\ 按位或,解决两个长度雷同的二进制数,两个相应的二进位中只有有一个为 1,该位的后果值为 1
^ 按位异或,对等长二进制模式按位或二进制数的每一位执行逻辑异按位或操作。如果某位不同则该位为 1,否则该位为 0
按位取反,是一元运算符,对一个二进制数的每一位执行逻辑反操作。使数字 1 成为 0,0 成为 1
<< 左移,右边的运算数的各二进位全副左移若干位,由左边的数指定挪动的位数,高位抛弃,低位补 0
>> 右移,把 >> 右边的运算数的各二进位全副右移若干位,>> 左边的数指定挪动的位数
>>> 无符号右移,与有符号右移位相似,除了右边一律应用 0 补位。
示例:

咱们来看一下上面这段代码:

let a:number = 3;
let b:number = 7;

console.log(a & 1);   // 1
console.log(a | b);   // 7
console.log(a ^ b);   // 4
console.log(~a);      // -4
console.log(a << b);  // 384
console.log(a >> b);  // 0
console.log(a >>> b); // 0

依据每个运算符的形容,其实很容易得出后果。例如其中 a & 1,就是将 3 和 1 的值化为二进制,而后雷同地位的值都为 1,该位的值才为 1,否则为 0,如下:

 3 的二进制:00000011
1 的二进制:00000001
3&1 失去:00000001
00000001 化为十进制,就是 1,所以 a & 1 的后果为 1 

又比方 a | b ,就是将 3 化为二进制 00000011,7 也化为二进制 00000111,雷同地位只有一个为 1,该地位的值为 1,最终合起来失去后果为 00000111,将后果化为十进制,所以 a | b 的最终后果为 7。

赋值运算符

赋值运算符用于给变量赋值。最常见的应该就是等号 = 了,在申明变量时咱们始终有用到。其余赋值运算符还有:

运算符 形容
= 赋值,将值从右侧操作数赋给左侧操作数
+= 加法赋值,它将右操作数增加到左操作数并将后果赋给左操作数。
-= 减法赋值,它从左操作数中减去右操作数,并将后果赋给左操作数。
*= 乘法赋值,它将右操作数与左操作数相乘,并将后果赋给左操作数。
/= 除法赋值,它将左操作数除以右操作数,并将后果赋给左操作数。
示例:

= 是最简略的赋值运算符,就是将符号左边的值,赋给右边的变量。例如下列代码中将 10 赋值给变量 a:

let a:number;
a = 10;
console.log(a);  // 10

而加减乘除法的赋值也好了解,就相当于在右边这个变量自身的根底上,加减乘除一个左边的数:

a += 2;
console.log(a);  // 12

a -= 5;
console.log(a);  // 7

a *= 10;
console.log(a);  // 70

a /= 10;
console.log(a);  // 7

例如 a += 2,就相当于 a = a + 2a -= 5 就相当于 a = a - 5,其余的也能够顺次类推。

三元运算符

三元运算有 3 个操作数,并且须要判断布尔表达式的值。该运算符的次要是决定哪个值应该赋值给变量。

Test ? expr1 : expr2

其中 Test 指定的条件语句,如果条件语句 Testtrue 则返回 expr1,为 false 则返回 expr2

示例:

变量 a 的值为 7,咱们应用三元运算符判断 a 是否大于 5,是则输入“a 大于 5”,否则输入“a 小于等于 5”:

let a:number = 7;
console.log(a > 5 ? "a 大于 5" : "a 小于等于 5");

// 输入:a 大于 5 

类型运算符

typeof 是一元运算符,能够用于返回操作数的数据类型。

示例:

申明并初始化三个变量

let a = 1;
let b = "xkd";
let c = true;

而后通过typeof 输入这三个变量的数据类型:

console.log(typeof a);  // number
console.log(typeof b);  // string
console.log(typeof c);  // boolean

入手练习

1. 现有一个字符串类型的变量 username,请给这个变量赋一个初始值?

2. 已知变量 a 的值为 399,变量 b 的值为 25,请输入 a % b 的后果?

3. 请应用三元运算符来判断某个变量的值是否为“夏天”,如果是则输入 true,不是则输入 false

4. 请判断上面几个变量的数据类型,并输入后果:

var arr = [1, 2, 3, 4, 5];
var obj = {'a':1};
var num = 100;
var str = "侠课岛";

链接:https://www.9xkd.com/

退出移动版