CoffeeScript - 运算符和别名


CoffeeScript 运算符

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

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

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

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

CoffeeScript 别名

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

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

算术运算符

CoffeeScript 支持以下算术运算符。假设变量A10且变量B20,则 -

显示示例

序列号 操作符及说明 例子
1

+(加法)

添加两个操作数

A + B = 30
2

−(减法)

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

A - B = -10
3

*(乘法)

将两个操作数相乘

A * B = 200
4

/ (分配)

将分子除以分母

乙/甲=2
5

%(模数)

输出整数除法的余数

B % A = 0
6

++(增量)

将整数值加一

A++ = 11
7

--(递减)

将整数值减一

A-- = 9

比较运算符

JavaScript 支持以下比较运算符。假设变量A10且变量B20,则 -

显示示例

序列号 操作符及说明 例子
1

= =(等于)

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

(A == B) 不正确。
2

!=(不等于)

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

(A != B) 为真。
3

>(大于)

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

(A > B) 不正确。
4

<(小于)

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

(A < B) 为真。
5

>=(大于或等于)

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

(A >= B) 不正确。
6

<=(小于或等于)

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

(A <= B) 为真。

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

显示示例

操作员 别名 例子
= =(等于) A is B给你真实的。
!= =(不等于) 不是 A 不是 B给你假的。

逻辑运算符

CoffeeScript 支持以下逻辑运算符。假设变量A10且变量B20,则 -

显示示例

序列号 操作符及说明 例子
1

&&(逻辑与)

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

(A && B) 是正确的。
2

|| (逻辑或)

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

(A || B) 为真。
3

!(逻辑非)

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

!(A && B) 是错误的。

下表显示了一些逻辑运算符的别名。假设Xtrue且变量Yfalse

显示示例

操作员 别名 例子
&&(逻辑与) X 和 Y给你假
|| (逻辑或) 或者 X 或 Y给你真实的
!(不是x) 不是 不是 X给你假

按位运算符

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

显示示例

序列号 操作符及说明 例子
1

&(按位与)

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

(A & B) 为 2。
2

| (按位或)

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

(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 或未定义,否则存在运算符返回 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 提供的别名。

姓名 运算符/符号 别名
“等于”运算符 ==
“不等于”运算符 !== 不是
“非”运算符 不是
“与”运算符 &&
“或”运算符 || 或者
布尔值 true 真的 是的,是的,在
布尔值 false 错误的 关闭,不
当前对象 @
换行(或)分号 \n 或 ; 然后
如果的逆 !如果 除非
测试阵列是否存在
测试对象是否存在
求幂 一个**
整数除法 一个// b
股息相关模数 %% 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