运算符和别名(Operators and Aliases)
CoffeeScript运算符
运算符是告诉编译器执行特定数学或逻辑函数的符号。 让我们采用一个简单的表达式4 + 5 is equal to 9 。 这里4和5被称为operands ,'+'被称为operator 。
除了一些差异之外,CoffeeScript提供的运算符与JavaScript中的运算符相同。 JavaScript中有一些有问题的运算符。 CoffeeScript要么删除它们要么修改它们的功能,它还引入了一些新的操作符。
以下是CoffeeScript支持的运算符列表。
- 算术运算符
- 比较运算符
- 逻辑(或关系)运算符
- 分配运算符
CoffeeScript别名
除了运算符,CoffeeScript还提供别名。 CoffeeScript为各种运算符和符号提供别名,以使您的CoffeeScript代码可读且更加用户友好。
让我们一个一个地看看CoffeeScript的所有运算符和别名。
算术运算符 (Arithmetic Operators)
CoffeeScript支持以下算术运算符。 假设变量A保持10 ,变量B保持20 ,则 -
S.No | 运算符和描述 | 例 |
---|---|---|
1 | + (Addition) 添加两个操作数 | A + B = 30 |
2 | − (Subtraction) 从第一个中减去第二个操作数 | A - B = -10 |
3 | * (Multiplication) 将两个操作数相乘 | A * B = 200 |
4 | / (Division) 用分母除以分子 | B/A = 2 |
5 | % (Modulus) 输出整数除法的余数 | B%A = 0 |
6 | ++ (Increment) 将整数值增加1 | A ++ = 11 |
7 | -- (Decrement) 将整数值减1 | A-- = 9 |
比较运算符 (Comparison Operators)
JavaScript支持以下比较运算符。 假设变量A保持10 ,变量B保持20 ,则 -
S.No | 运算符和描述 | 例 |
---|---|---|
1 | = = (Equal) 检查两个操作数的值是否相等,如果是,则条件成立。 | (A == B)不是真的。 |
2 | != (Not Equal) 检查两个操作数的值是否相等,如果值不相等,则条件变为true。 | (A!= B)是真的。 |
3 | 》 (Greater than) 检查左操作数的值是否大于右操作数的值,如果是,则条件变为真。 | (A> B)不是真的。 |
4 | 《 (Less than) 检查左操作数的值是否小于右操作数的值,如果是,则条件变为真。 | (A < B) 为真 |
5 | 》= (Greater than or Equal to) 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件变为真。 | (A> = B)不是真的。 |
6 | 《= (Less than or Equal to) 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真。 | (A <= B)是真的。 |
下表显示了少数比较运算符的别名。 假设A持有20而变量B持有20 。
操作者 | 别号 | 例 |
---|---|---|
= =(等于) | is | A is B给你真实的。 |
!= =(不等于) | isnt | A isnt B给你假。 |
逻辑运算符 (Logical Operators)
CoffeeScript支持以下逻辑运算符。 假设变量A保持10 ,变量B保持20 ,则 -
S.No | 运算符和描述 | 例 |
---|---|---|
1 | && (Logical AND) 如果两个操作数都不为零,则条件成立。 | (A && B)是真的。 |
2 | || (Logical OR) 如果两个操作数中的任何一个非零,则条件变为真。 | (A || B)是真的。 |
3 | ! (Logical NOT) 反转其操作数的逻辑状态。 如果条件为真,则Logical NOT运算符将使其为false。 | ! (A && B)是假的。 |
下表显示了某些逻辑运算符的别名。 假设X保持为true ,变量Y保持为false 。
操作者 | 别号 | 例 |
---|---|---|
&& (Logical AND) | and | X and Y给你假 |
|| (逻辑或) | or | X or Y给你真实 |
! (不是x) | not | not X给你假 |
按位运算符 (Bitwise Operators)
CoffeeScript支持以下按位运算符。 假设变量A保持2而变量B保持3 ,则 -
S.No | 运算符和描述 | 例 |
---|---|---|
1 | & (Bitwise AND) 它对其整数参数的每个位执行布尔AND运算。 | (A&B)是2。 |
2 | | (BitWise OR) 它对其整数参数的每个位执行布尔OR运算。 | (A | B)是3。 |
3 | ^ (Bitwise XOR) 它对其整数参数的每个位执行布尔异或运算。 异或表示操作数1为真或操作数2为真,但不是两者。 | (A ^ B)是1。 |
4 | ~ (Bitwise Not) 它是一元运算符,通过反转操作数中的所有位来操作。 | (~B) is -4. |
5 | 《《 (Left Shift) 它将第一个操作数中的所有位向左移动第二个操作数中指定的位数。 新位用零填充。 将一个值左移一个位置相当于将其乘以2,移位两个位置相当于乘以4,依此类推。 | (A << 1)是4。 |
6 | 》》 (Right Shift) 二进制右移运算符。 左操作数的值向右移动右操作数指定的位数。 | (A >> 1)是1。 |
赋值操作符 (Assignment Operators)
CoffeeScript支持以下赋值运算符 -
S.No | 运算符和描述 | 例 |
---|---|---|
1 | = (Simple Assignment ) 将值从右侧操作数分配给左侧操作数 | C = A + B将A + B的值分配给C |
2 | += (Add and Assignment) 它将右操作数添加到左操作数并将结果赋给左操作数。 | C + = A等于C = C + A. |
3 | -= (Subtract and Assignment) 它从左操作数中减去右操作数,并将结果赋给左操作数。 | C - = A相当于C = C - A. |
4 | *= (Multiply and Assignment) 它将右操作数与左操作数相乘,并将结果赋给左操作数。 | C * = A等于C = C * A. |
5 | /= (Divide and Assignment) 它将左操作数与右操作数分开,并将结果赋给左操作数。 | C/= A相当于C = C/A. |
6 | %= (Modules and Assignment) 它使用两个操作数来获取模数,并将结果赋给左操作数。 | C%= A等于C = C%A |
Note - 相同的逻辑适用于按位运算符,因此它们将变为“”=,“”=,“”=,&=,| =和^ =。
CoffeeScript中的等式运算符
使用JavaScript时,您将遇到两种类型的相等运算符==和=== 。
JavaScript中的==运算符是type coercive ,即,如果操作中两个操作数的类型不同,则将其中一个运算符的数据类型转换为其他运算符,然后比较两者。
CoffeeScript避免了这种不受欢迎的强制,它将==运算符编译为JavaScript ===的严格比较运算符。
如果我们使用===比较两个操作数,那么它返回true ,只有当它们的值和数据类型都相等时,否则返回false 。
例子 (Example)
请考虑以下示例。 这里我们有两个变量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";
<b>result = a === b;</b>
console.log(result);
}).call(this);
执行时,它会产生以下输出。
false
存在主义运算符
CoffeeScript提供了一个新的运算符,称为存在运算符,用于验证变量的存在。 它用?表示? 。 除非变量为null或未定义,否则存在运算符返回true。
例子 (Example)
下面给出了存在运算符的一个例子。 这里我们有三个变量,即name, age和subject ,我们正在使用存在运算符验证变量名称和电话的存在。
name="Ramu"
age=24
subject="Engineering"
verify_name = <b>name?</b>
verify_phone = <b>phone?</b>
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
Note - 我们有存在运算符的存取变体? 。 我们可以用它代替。 运算符以找出空引用。
链式比较
与在Python中一样,我们可以在CoffeeScript中的单个表达式中使用一系列比较运算符。
例子 (Example)
以下是使用链式比较的示例。
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
Note - CoffeeScript删除了三元运算符; 而不是它,我们可以使用inline if语句。
CoffeeScript别名
通常,CoffeeScript为各种运算符和符号提供别名,以使您的CoffeeScript代码可读且更加用户友好。 以下是CoffeeScript提供的别名。
名称 | 运算符/符号 | 别名 |
---|---|---|
"equals to" operator | == | is |
"not equals to" operator | !== | isnt |
"not" operator | ! | not |
"and" operator | && | and |
"or" operator | || | or |
boolean value true | true | true, yes, on |
boolean value false | false | off, no |
当前对象 | this | @ |
新行(或)半冒号 | \n或; | then |
Inverse of if | ! 如果 | unless |
测试阵列存在 | in | |
测试对象存在 | of | |
Exponentiation | a ** b | |
整数除法 | a // b | |
dividend dependent modulo | a %% b |
例子 (Example)
以下示例显示如何在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