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
【TypeScript 运算符】上述代码中,我们可以看到:
- 当
++
后置时,即位于操作数的后面,会在递增前返回数值。 - 当
++
前置时,即位于操作数的前面,会在递增后返回数值。
true
或者 false
。关系运算符有6种,如下所示:运算符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
== | 等于 |
!= | 不等于 |
let a:number = 3;
let b:number = 7;
console.log(a < b);
// true console.log(a > b);
// falseconsole.log(a <= b);
// trueconsole.log(a >= b);
// falseconsole.log(a == b);
// falseconsole.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 结果就会返回 true
,a == 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);
// 12a -= 5;
console.log(a);
// 7a *= 10;
console.log(a);
// 70a /= 10;
console.log(a);
// 7
例如
a += 2
,就相当于 a = a + 2
,a -= 5
就相当于 a = a - 5
,其他的也可以依次类推。三元运算符 三元运算有 3 个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
Test ? expr1 : expr2
其中
Test
指定的条件语句,如果条件语句 Test
为 true
则返回 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/
推荐阅读
- Shell-Bash变量与运算符
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)
- 全过程工程咨询——时间管理(12)
- typeScript入门基础介绍
- (六)Component初识组件
- 带你了解类型系统以及flow和typescript的基本使用
- 二、Git|二、Git 基础操作
- 曼陀罗解读第三期第一节课作业
- 二、Dart基础语法|二、Dart基础语法 (二)运算符 类
- react+typescript+router框架搭建笔记