- CoffeeScript 教程
- CoffeeScript - 主页
- CoffeeScript - 概述
- CoffeeScript - 环境
- CoffeeScript - 命令行实用程序
- CoffeeScript - 语法
- CoffeeScript - 数据类型
- CoffeeScript - 变量
- CoffeeScript - 运算符和别名
- CoffeeScript - 条件
- CoffeeScript - 循环
- CoffeeScript - 理解
- CoffeeScript - 函数
- CoffeeScript 面向对象
- CoffeeScript - 字符串
- CoffeeScript - 数组
- CoffeeScript - 对象
- CoffeeScript - 范围
- CoffeeScript - Splat
- CoffeeScript - 日期
- CoffeeScript - 数学
- CoffeeScript - 异常处理
- CoffeeScript - 正则表达式
- CoffeeScript - 类和继承
- CoffeeScript 高级版
- CoffeeScript - Ajax
- CoffeeScript - jQuery
- CoffeeScript-MongoDB
- CoffeeScript-SQLite
- CoffeeScript 有用资源
- CoffeeScript - 快速指南
- CoffeeScript - 有用的资源
- CoffeeScript - 讨论
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 | / (分配) 将分子除以分母 |
乙/甲=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。
操作员 | 别名 | 例子 |
---|---|---|
= =(等于) | 是 | A is B给你真实的。 |
!= =(不等于) | 不是 | A 不是 B给你假的。 |
逻辑运算符
CoffeeScript 支持以下逻辑运算符。假设变量A为10且变量B为20,则 -
序列号 | 操作符及说明 | 例子 |
---|---|---|
1 | &&(逻辑与) 如果两个操作数均非零,则条件为真。 |
(A && B) 是正确的。 |
2 | || (逻辑或) 如果两个操作数中的任何一个非零,则条件为真。 |
(A || B) 为真。 |
3 | !(逻辑非) 反转其操作数的逻辑状态。如果条件为真,则逻辑 NOT 运算符会将其设为假。 |
!(A && B) 是错误的。 |
下表显示了一些逻辑运算符的别名。假设X为true且变量Y为false。
操作员 | 别名 | 例子 |
---|---|---|
&&(逻辑与) | 和 | 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。
例子
考虑以下示例。这里我们有两个变量a和b。a保存的是整数类型的值 21,b保存的是相同的值,但它是字符串类型。在 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、age和subject,我们使用存在运算符验证变量 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