- 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