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=21b="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=24subject="Engineering"verify_name = name?verify_phone = phone?console.log verify_nameconsole.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 = 70passed = 100 > score > 40console.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"operator | ! | not |
"和"运算符 | && | and |
"或"运算符 | || | or |
boolean value true | true | true,yes,on |
boolean value false | false | off,no |
当前对象 | this | @ |
换行(或)半冒号 | \ n或; | then |
反转if | ! if | unless |
测试阵列存在 | in | |
测试对象存在 | of | |
Exponentiation | a ** b | |
整数除法 | a // b | |
股息依赖模数 | a %% b |
示例
以下示例说明如何使用CoffeeScript中的别名 :
a=21; b=21x = true; y = falseconsole.log a is bconsole.log a isnt bconsole.log x and yconsole.log x or yconsole.log yes or noconsole.log on or offconsole.log a**bconsole.log a//bconsole.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文件,它会产生以下输出 :
truefalsefalsetruetruetrue5.842587018385982e+2710