运算符和别名(Operators and Aliases)

优质
小牛编辑
138浏览
2023-12-01

CoffeeScript运算符

运算符是告诉编译器执行特定数学或逻辑函数的符号。 让我们采用一个简单的表达式4 + 5 is equal to 9 。 这里4和5被称为operands ,'+'被称为operator

除了一些差异之外,CoffeeScript提供的运算符与JavaScript中的运算符相同。 JavaScript中有一些有问题的运算符。 CoffeeScript要么删除它们要么修改它们的功能,它还引入了一些新的操作符。

以下是CoffeeScript支持的运算符列表。

  • 算术运算符
  • 比较运算符
  • 逻辑(或关系)运算符
  • 分配运算符

CoffeeScript别名

除了运算符,CoffeeScript还提供别名。 CoffeeScript为各种运算符和符号提供别名,以使您的CoffeeScript代码可读且更加用户友好。

让我们一个一个地看看CoffeeScript的所有运算符和别名。

算术运算符 (Arithmetic Operators)

CoffeeScript支持以下算术运算符。 假设变量A保持10 ,变量B保持20 ,则 -

显示示例

S.No运算符和描述
1

+ (Addition)

添加两个操作数

A + B = 30
2

− (Subtraction)

从第一个中减去第二个操作数

A - B = -10
3

* (Multiplication)

将两个操作数相乘

A * B = 200
4

/ (Division)

用分母除以分子

B/A = 2
5

% (Modulus)

输出整数除法的余数

B%A = 0
6

++ (Increment)

将整数值增加1

A ++ = 11
7

-- (Decrement)

将整数值减1

A-- = 9

比较运算符 (Comparison Operators)

JavaScript支持以下比较运算符。 假设变量A保持10 ,变量B保持20 ,则 -

显示示例

S.No运算符和描述
1

= = (Equal)

检查两个操作数的值是否相等,如果是,则条件成立。

(A == B)不是真的。
2

!= (Not Equal)

检查两个操作数的值是否相等,如果值不相等,则条件变为true。

(A!= B)是真的。
3

》 (Greater than)

检查左操作数的值是否大于右操作数的值,如果是,则条件变为真。

(A> B)不是真的。
4

《 (Less than)

检查左操作数的值是否小于右操作数的值,如果是,则条件变为真。

(A < B) 为真
5

》= (Greater than or Equal to)

检查左操作数的值是否大于或等于右操作数的值,如果是,则条件变为真。

(A> = B)不是真的。
6

《= (Less than or Equal to)

检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真。

(A <= B)是真的。

下表显示了少数比较运算符的别名。 假设A持有20而变量B持有20

显示示例

操作者别号
= =(等于)isA is B给你真实的。
!= =(不等于)isntA isnt B给你假。

逻辑运算符 (Logical Operators)

CoffeeScript支持以下逻辑运算符。 假设变量A保持10 ,变量B保持20 ,则 -

显示示例

S.No运算符和描述
1

&& (Logical AND)

如果两个操作数都不为零,则条件成立。

(A && B)是真的。
2

|| (Logical OR)

如果两个操作数中的任何一个非零,则条件变为真。

(A || B)是真的。
3

! (Logical NOT)

反转其操作数的逻辑状态。 如果条件为真,则Logical NOT运算符将使其为false。

! (A && B)是假的。

下表显示了某些逻辑运算符的别名。 假设X保持为true ,变量Y保持为false

显示示例

操作者别号
&& (Logical AND)andX and Y给你假
|| (逻辑或)orX or Y给你真实
! (不是x)notnot X给你假

按位运算符 (Bitwise Operators)

CoffeeScript支持以下按位运算符。 假设变量A保持2而变量B保持3 ,则 -

显示示例

S.No运算符和描述
1

& (Bitwise AND)

它对其整数参数的每个位执行布尔AND运算。

(A&B)是2。
2

| (BitWise OR)

它对其整数参数的每个位执行布尔OR运算。

(A | B)是3。
3

^ (Bitwise XOR)

它对其整数参数的每个位执行布尔异或运算。 异或表示操作数1为真或操作数2为真,但不是两者。

(A ^ B)是1。
4

~ (Bitwise Not)

它是一元运算符,通过反转操作数中的所有位来操作。

(~B) is -4.
5

《《 (Left Shift)

它将第一个操作数中的所有位向左移动第二个操作数中指定的位数。 新位用零填充。 将一个值左移一个位置相当于将其乘以2,移位两个位置相当于乘以4,依此类推。

(A << 1)是4。
6

》》 (Right Shift)

二进制右移运算符。 左操作数的值向右移动右操作数指定的位数。

(A >> 1)是1。

赋值操作符 (Assignment Operators)

CoffeeScript支持以下赋值运算符 -

显示示例

S.No运算符和描述
1

= (Simple Assignment )

将值从右侧操作数分配给左侧操作数

C = A + B将A + B的值分配给C
2

+= (Add and Assignment)

它将右操作数添加到左操作数并将结果赋给左操作数。

C + = A等于C = C + A.
3

-= (Subtract and Assignment)

它从左操作数中减去右操作数,并将结果赋给左操作数。

C - = A相当于C = C - A.
4

*= (Multiply and Assignment)

它将右操作数与左操作数相乘,并将结果赋给左操作数。

C * = A等于C = C * A.
5

/= (Divide and Assignment)

它将左操作数与右操作数分开,并将结果赋给左操作数。

C/= A相当于C = C/A.
6

%= (Modules and Assignment)

它使用两个操作数来获取模数,并将结果赋给左操作数。

C%= A等于C = C%A

Note - 相同的逻辑适用于按位运算符,因此它们将变为“”=,“”=,“”=,&=,| =和^ =。

CoffeeScript中的等式运算符

使用JavaScript时,您将遇到两种类型的相等运算符=====

JavaScript中的==运算符是type coercive ,即,如果操作中两个操作数的类型不同,则将其中一个运算符的数据类型转换为其他运算符,然后比较两者。

CoffeeScript避免了这种不受欢迎的强制,它将==运算符编译为JavaScript ===的严格比较运算符。

如果我们使用===比较两个操作数,那么它返回true ,只有当它们的值和数据类型都相等时,否则返回false

例子 (Example)

请考虑以下示例。 这里我们有两个变量aba保存整数类型的值21, b保持相同的值,但它是string类型。 在CoffeeScript中,当我们比较ab ,结果将为false 。 (因为CoffeeScript的==运算符转换为JavaScript的===运算符)

a=21
b="21"
result = 21=='21'
console.log result

在编译时,上面的CoffeeScript生成以下JavaScript

// Generated by CoffeeScript 1.10.0
(function() {
  var a, b, result;
  a = 21;
  b = "21";
  <b>result = a === b;</b>
  console.log(result);
}).call(this);

执行时,它会产生以下输出。

false

存在主义运算符

CoffeeScript提供了一个新的运算符,称为存在运算符,用于验证变量的存在。 它用?表示? 。 除非变量为null或未定义,否则存在运算符返回true。

例子 (Example)

下面给出了存在运算符的一个例子。 这里我们有三个变量,即name, agesubject ,我们正在使用存在运算符验证变量名称和电话的存在。

name="Ramu"
age=24
subject="Engineering"
verify_name = <b>name?</b>
verify_phone = <b>phone?</b>
console.log verify_name
console.log verify_phone

在编译时,这将生成以下JavaScript代码。

// Generated by CoffeeScript 1.10.0
(function() {
  var age, name, subject, verify_name, verify_phone;
  name = "Ramu";
  age = 24;
  subject = "Engineering";
  verify_name = name != null;
  verify_phone = typeof phone !== "undefined" && phone !== null;
  console.log(verify_name);
  console.log(verify_phone);
}).call(this);

如果我们执行上面的CoffeeScript文件,它会产生以下输出。

true
false

Note - 我们有存在运算符的存取变体? 。 我们可以用它代替。 运算符以找出空引用。

链式比较

与在Python中一样,我们可以在CoffeeScript中的单个表达式中使用一系列比较运算符。

例子 (Example)

以下是使用链式比较的示例。

score = 70
passed = 100 > score > 40
console.log passed

在编译时,示例CoffeeScript为您提供以下JavaScript代码。

// Generated by CoffeeScript 1.10.0
(function() {
  var passed, score;
  score = 70;
  passed = (100 > score && score > 40);
  console.log(passed);
}).call(this);

如果执行上述CoffeeScript代码,则会生成以下输出。

true

Note - CoffeeScript删除了三元运算符; 而不是它,我们可以使用inline if语句。

CoffeeScript别名

通常,CoffeeScript为各种运算符和符号提供别名,以使您的CoffeeScript代码可读且更加用户友好。 以下是CoffeeScript提供的别名。

名称运算符/符号别名
"equals to" operator==is
"not equals to" operator!==isnt
"not" operator!not
"and" operator&&and
"or" operator||or
boolean value truetruetrue, yes, on
boolean value falsefalseoff, no
当前对象this@
新行(或)半冒号\n或;then
Inverse of if! 如果unless
测试阵列存在in
测试对象存在of
Exponentiationa ** b
整数除法a // b
dividend dependent moduloa %% b

例子 (Example)

以下示例显示如何在CoffeeScript中使用别名 -

a=21; b=21
x = true; y = false
console.log a is b
console.log a isnt b
console.log x and y
console.log x or y
console.log yes or no
console.log on or off
console.log a**b
console.log a//b
console.log a%%b

在编译上面的示例时,它为您提供以下JavaScript代码。

// Generated by CoffeeScript 1.10.0
(function() {
  var a, b, x, y,
    modulo = function(a, b) { return (+a % (b = +b) + b) % b; };
  a = 21;
  b = 21;
  x = true;
  y = false;
  console.log(a === b);
  console.log(a !== b);
  console.log(x && y);
  console.log(x || y);
  console.log(true || false);
  console.log(true || false);
  console.log(Math.pow(a, b));
  console.log(Math.floor(a/b));
  console.log(modulo(a, b));
}).call(this);

如果您执行上面的CoffeeScript文件,它会产生以下输出 -

true
false
false
true
true
true
5.842587018385982e+27
1
0