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)不成立.
2

!=(不等于)

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

(A!= B)为真.
3

> (大于)

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

(A> B)不成立.
4

< (小于)

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

(A< B)为真.
5

> =(大于或等于)

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

(A> = B)不成立.
6

< =(小于或等于)

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

(A< = B)为真.

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

运算符别名示例
= =(等于) A是B 给你真实.
!= =(不等于)不是 A不是B 给你假.

逻辑运算符

CoffeeScript支持以下逻辑运算符.假设变量 A 持有 10 而变量 B 持有 20 ,然后是 :

S.No运算符和描述示例
1

&& (逻辑与)

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

( A&& B)是真的.
2

|| (逻辑或)

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

(A || B)为真.
3

! (逻辑NOT)

反转其操作数的逻辑状态.如果条件为真,那么Logical NOT运算符将使其为假.

! (A&& B)是假的.

下表显示了一些逻辑运算符的别名.假设 X 持有且变量 Y 持有.

运算符别名示例
&& (逻辑与) X和Y 给你假
|| (逻辑或) X或Y 为您提供真实的
! (不是x)不是 不是X 给你假

按位运算符

CoffeeScript支持以下按位运算符.假设变量 A 持有 2 而变量 B 持有 3 ,然后是 :

S.No运算符和描述示例
1

& (按位AND)

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

(A & B)是2.
2

| (BitWise OR)

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

(A | B)是3.
3

^(按位异或)

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

(A ^ B)为1.
4

〜(按位不是)

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

(〜B)是-4.
5

<< (左移)

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

(A<< 1)是4.
6

>>(右移)

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

(A>> 1)为1.

分配运算符

CoffeeScript支持以下赋值运算符 :

显示示例

S.No运算符和描述示例
1

=(简单分配)

从右侧操作数到左侧操作数分配值

C = A +  B将指定A&plus的值; 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时,您将遇到两种类型的相等运算符 == === ./p>

JavaScript中的 == 运算符是类型强制,即如果一个操作中两个操作数的类型不同,那么其中一个运算符的数据类型被转换为另一个,然后两者进行比较.

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

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

示例

考虑以下示例.这里我们有两个变量 a b . a 保存整数类型的值21, b 保持相同的值,但它是 string 类型.在CoffeeScript中,当我们比较 a b 时,结果将是 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="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"operatornot
"和"运算符&&and
"或"运算符||or
boolean value truetruetrue,yes,on
boolean value falsefalseoff,no
当前对象this@
换行(或)半冒号\ n或;then
反转if! ifunless
测试阵列存在
in
测试对象存在
of
Exponentiation
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