CoffeeScript - 运算符和别名

CoffeeScript 运算符

运算符是一个符号,它告诉编译器执行特定的数学或逻辑函数。让我们来看一个简单的表达式4 + 5 等于 9。 这里 4 和 5 称为操作数,'+' 称为运算符

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

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

  • 算术运算符
  • 比较运算符
  • 逻辑(或关系)运算符
  • 赋值运算符

CoffeeScript 别名

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

让我们一一了解CoffeeScript的所有运算符和别名。


算术运算符

CoffeeScript 支持以下算术运算符。 假设变量A 的值为10,变量B 的值为20,则 −

显示示例

S.No 运算符和说明 示例
1

+ (加法)

添加两个操作数

A + B = 30
2

− (减法)

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

A - B = -10
3

* (乘法)

将两个操作数相乘

A * B = 200
4

/ (除法)

分子除以分母

B / A = 2
5

% (模数)

输出整数除法的余数

B % A = 0
6

++(递增)

将整数值增加一

A++ = 11
7

-- (递减)

将整数值减一

A-- = 9

比较运算符

JavaScript 支持以下比较运算符。 假设变量A 的值为10,变量B 的值为20,则 −

显示示例

S.No 运算符和说明 示例
1

= = (等于)

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

(A == B) is not true.
2

!= (不等于)

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

(A != B) is true.
3

> (大于)

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

(A > B) is not true.
4

< (小于)

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

(A < B) is true.
5

>= (大于或等于)

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

(A >= B) is not true.
6

<= (小于或等于)

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

(A <= B) is true.

下表显示了一些比较运算符的别名。 假设 A 包含 20 并且变量 B 包含 20

显示示例

运算符 别名 示例
= = (等于) is A is B gives you true.
!= = (不等于) isnt A isnt B gives you false.

逻辑运算符

CoffeeScript 支持以下逻辑运算符。 假设变量A 的值为10,变量B 的值为20,则 −

显示示例

S.No 运算符和说明 示例
1

&& (逻辑与)

如果两个操作数都非零,则条件为真。

(A && B) is true.
2

|| (逻辑或)

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

(A || B) is true.
3

! (逻辑非)

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

! (A && B) is false.

下表显示了一些逻辑运算符的别名。 假设变量 X 持有 true 和变量 Y 持有 false

显示示例

运算符 别名 示例
&& (逻辑与) and X and Y gives you false
|| (逻辑或) or X or Y gives you true
! (逻辑非) not not X gives you false

位运算符

CoffeeScript 支持以下位运算符。 假设变量A包含2,变量B包含3,则 −

显示示例

S.No 运算符及说明 示例
1

& (按位与)

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

(A & B) is 2.
2

| (按位或)

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

(A | B) is 3.
3

^ (按位异或)

它对其整数参数的每一位执行布尔异或运算。 异或表示操作数一为真或操作数二为真,但不能同时为真。

(A ^ B) is 1.
4

~ (按位非)

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

(~B) is -4.
5

<< (左移)

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

(A << 1) is 4.
6

>> (右移)

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

(A >> 1) is 1.

赋值运算符

CoffeeScript 支持以下赋值运算符 −

显示示例

S.No 运算符和说明 示例
1

= (简单赋值)

将右侧操作数的值赋给左侧操作数

C = A + B 会将 A + B 的值赋值给 C
2

+= (添加和赋值)

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

C += A 等同于 C = C + A
3

-= (减法和赋值)

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

C -= A 等同于 C = C - A
4

*= (乘法和赋值)

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

C *= A 等同于 C = C * A
5

/= (除法和赋值)

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

C /= A 等同于 C = C / A
6

%= (取模和赋值)

它使用两个操作数取模并将结果分配给左操作数。

C %= A 等同于 C = C % A

注意 − 相同的逻辑适用于按位运算符,因此它们将变得像 <<=, >>=, >>=, &=, |= 和 ^=。


CoffeeScript 中的相等运算符

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

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

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

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

示例

考虑以下示例。 这里我们有两个变量 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";
  
  result = a === b;
  console.log(result);
}).call(this);

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

false

存在操作符

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

示例

下面给出了存在运算符的示例。 这里我们有三个变量,即 name、agesubject,我们正在使用存在运算符验证变量 name 和 phone 的存在。

name="Ramu"
age=24
subject="Engineering"
verify_name = name?
verify_phone = phone?
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

注意 − 我们有存在运算符 ? 的访问器变体。 我们可以用它代替 . 运算符找出空引用。


链式比较

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

示例

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

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

注意 − CoffeeScript 移除了三元运算符; 我们可以使用 inline if 语句代替它。


CoffeeScript 别名

一般来说,CoffeeScript 为各种运算符和符号提供别名,以使您的 CoffeeScript 代码更易读且对用户更友好。 以下是 CoffeeScript 提供的别名。

名称 运算符/符号 别名
"等于"运算符 == is
"不等于"运算符 !== isnt
"非"运算符 ! not
"与"操作符 && and
"或"运算符 || or
布尔值 true true true, yes, on
布尔值 false false off, no
当前对象 this @
换行(或)分号 \n or ; then
if 的逆运算 ! if unless
测试数组是否存在 in
测试对象是否存在 of
求幂 a**b
整数除法 a//b

示例

下面的例子展示了如何在 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