- CoffeeScript 教程
- CoffeeScript - 首页
- CoffeeScript - 概述
- CoffeeScript - 环境
- CoffeeScript - 命令行工具
- CoffeeScript - 语法
- CoffeeScript - 数据类型
- CoffeeScript - 变量
- CoffeeScript - 运算符和别名
- CoffeeScript - 条件语句
- CoffeeScript - 循环
- CoffeeScript - 推导式
- CoffeeScript - 函数
- CoffeeScript 面向对象
- CoffeeScript - 字符串
- CoffeeScript - 数组
- CoffeeScript - 对象
- CoffeeScript - 范围
- CoffeeScript - 展开运算符
- 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 | /(除法) 将分子除以分母 |
B / A = 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。
运算符 | 别名 | 示例 |
---|---|---|
= =(等于) | is | A is B 给出真。 |
!= =(不等于) | isnt | A isnt B 给出假。 |
逻辑运算符
CoffeeScript 支持以下逻辑运算符。假设变量A持有10,变量B持有20,则−
序号 | 运算符和描述 | 示例 |
---|---|---|
1 | &&(逻辑与) 如果两个操作数均非零,则条件变为真。 |
(A && B) 为真。 |
2 | ||(逻辑或) 如果两个操作数中的任何一个非零,则条件变为真。 |
(A || B) 为真。 |
3 | !(逻辑非) 反转其操作数的逻辑状态。如果条件为真,则逻辑非运算符将使其变为假。 |
! (A && B) 为假。 |
下表显示了一些逻辑运算符的别名。假设X持有true,变量Y持有false。
运算符 | 别名 | 示例 |
---|---|---|
&&(逻辑与) | and | X and Y 给出假 |
||(逻辑或) | or | X or Y 给出真 |
! (not x) | not | not X 给出假 |
位运算符
CoffeeScript 支持以下位运算符。假设变量A持有2,变量B持有3,则−
序号 | 运算符和描述 | 示例 |
---|---|---|
1 | &(按位与) 它对每个整数参数的每一位执行布尔与运算。 |
(A & B) 为 2。 |
2 | |(按位或) 它对每个整数参数的每一位执行布尔或运算。 |
(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 或 undefined,否则存在运算符返回 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 提供的别名。
名称 | 运算符/符号 | 别名 |
---|---|---|
"等于" 运算符 | == | is |
"不等于" 运算符 | !== | isnt |
"非" 运算符 | ! | not |
"与" 运算符 | && | and |
"或" 运算符 | || | or |
布尔值 true | true | true, yes, on |
布尔值 false | false | off, no |
当前对象 | this | @ |
换行符(或)分号 | \n 或 ; | 然后 |
if 的逆运算 | ! if | unless |
测试数组是否存在 | in | |
测试对象是否存在 | of | |
指数运算 | 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