CoffeeScript - 运算符和别名



CoffeeScript 运算符

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

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

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

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

CoffeeScript 别名

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

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

算术运算符

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

显示示例

序号 运算符和描述 示例
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,则−

显示示例

序号 运算符和描述 示例
1

= =(等于)

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

(A == B)不为真。
2

!=(不等于)

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

(A != B)为真。
3

>(大于)

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

(A > B)不为真。
4

<(小于)

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

(A < B)为真。
5

>=(大于或等于)

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

(A >= B)不为真。
6

<=(小于或等于)

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

(A <= B)为真。

下表显示了一些比较运算符的别名。假设A持有20,变量B持有20

显示示例

运算符 别名 示例
= =(等于) is A is B 给出真。
!= =(不等于) isnt A isnt B 给出假。

逻辑运算符

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

显示示例

序号 运算符和描述 示例
1

&&(逻辑与)

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

(A && B) 为真。
2

||(逻辑或)

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

(A || B) 为真。
3

!(逻辑非)

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

! (A && B) 为假。

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

显示示例

运算符 别名 示例
&&(逻辑与) and X and Y 给出假
||(逻辑或) or X or Y 给出真
! (not x) not not X 给出假

位运算符

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

显示示例

序号 运算符和描述 示例
1

&(按位与)

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

(A & B) 为 2。
2

|(按位或)

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

(A | B) 为 3。
3

^(按位异或)

它对每个整数参数的每一位执行布尔异或运算。异或意味着操作数一为真或操作数二为真,但不能两者都为真。

(A ^ B) 为 1。
4

~(按位非)

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

(~B) 为 -4。
5

<<(左移)

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

(A << 1) 为 4。
6

>>(右移)

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

(A >> 1) 为 1。

赋值运算符

CoffeeScript 支持以下赋值运算符−

显示示例

序号 运算符和描述 示例
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持有相同的值,但它是字符串类型。在 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 或 undefined,否则存在运算符返回 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 移除了三元运算符;我们可以使用内联 if 语句来代替它。

CoffeeScript 别名

通常,CoffeeScript 为各种运算符和符号提供了别名,以便使您的 CoffeeScript 代码更易读和更友好。以下是 CoffeeScript 提供的别名。

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