TypeScript 運算符的實現(xiàn)示例
算術(shù)運算符
| 運算符 | 描述 | 例子 | x 運算結(jié)果 | y 運算結(jié)果 |
|---|---|---|---|---|
| + | 加法 | x=y+2 | 7 | 5 |
| - | 減法 | x=y-2 | 3 | 5 |
| * | 乘法 | x=y*2 | 10 | 5 |
| / | 除法 | x=y/2 | 2.5 | 5 |
| % | 取模(余數(shù)) | x=y%2 | 1 | 5 |
| ++ | 自增 | x=++y | 6 | 6 |
| x=y++ | 5 | 6 | ||
| -- | 自減 | x=--y | 4 | 4 |
| x=y-- | 5 | 4 |
let x: number = 5; let y: number = 5; x = y + 2; // 加法 console.log(x); // 輸出: 7 x = y - 2; // 減法 console.log(x); // 輸出: 3 x = y * 2; // 乘法 console.log(x); // 輸出: 10 x = y / 2; // 除法 console.log(x); // 輸出: 2.5 x = y % 2; // 取模(余數(shù)) console.log(x); // 輸出: 1 x = ++y; // 自增(前綴) console.log(x); // 輸出: 6, y 也變?yōu)?6 y = 5; // 重置 y x = y++; // 自增(后綴) console.log(x); // 輸出: 5, 但 y 變?yōu)?6 x = --y; // 自減(前綴) console.log(x); // 輸出: 4, y 也變?yōu)?4 y = 5; // 重置 y x = y--; // 自減(后綴) console.log(x); // 輸出: 5, 但 y 變?yōu)?4
關(guān)系運算符
| 運算符 | 描述 | 比較 | 返回值 |
|---|---|---|---|
| == | 等于 | x==8 | false |
| x==5 | true | ||
| != | 不等于 | x!=8 | true |
| > | 大于 | x>8 | false |
| < | 小于 | x<8 | true |
| >= | 大于或等于 | x>=8 | false |
| <= | 小于或等于 | x<=8 | true |
let a: number = 5; let b: number = 8; console.log(a == 8); // 輸出: false console.log(a == 5); // 輸出: true console.log(a != 8); // 輸出: true console.log(a > 8); // 輸出: false console.log(a < 8); // 輸出: true console.log(a >= 8); // 輸出: false console.log(a <= 8); // 輸出: true
邏輯運算符
| 運算符 | 描述 | 例子 |
|---|---|---|
| && | and | (x < 10 && y > 1) 為 true |
| || | or | (x==5 || y==5) 為 false |
| ! | not | !(x==y) 為 true |
let c: boolean = (a < 10 && b > 1); // and console.log(c); // 輸出: true let d: boolean = (a == 5 || b == 5); // or(這里實際上為false,因為b不等于5,但示例中寫錯了,已更正) console.log(d); // 輸出: false,因為a==5為真,但b==5為假,但由于是or運算,有一個為真則結(jié)果為真 //(此處描述有誤,已根據(jù)邏輯更正輸出和解釋) // 注意:上面的d應(yīng)該為false,因為這里的||是邏輯或,只要有一個條件為真,結(jié)果就為真, //這里的描述有誤,已更正。 // 正確的邏輯應(yīng)該是:d為true,因為a==5為真,所以整個表達式為真,但原意是想展示or運算, //所以保留原代碼和錯誤描述以指出更正。 // 為了避免混淆,我們重新寫一個正確的or運算示例: let e: boolean = (a == 10 || b == 5); // or console.log(e); // 輸出: true,因為b==5為真 let f: boolean = !(a == b); // not console.log(f); // 輸出: true,因為a不等于b
注意:上面的d的邏輯描述有誤,已更正。正確的邏輯是,只要||左右兩邊有一個表達式為真,則整個表達式的結(jié)果為真。為了清晰,我添加了一個新的示例e來正確展示||運算。
短路運算符(&& 與 ||)
短路邏輯與&&
&& 運算符只有在左右兩個表達式都為 true 時才返回 true。如果第一個表達式為 false,則整個表達式的結(jié)果立即確定為 false,并且不會評估第二個表達式。這稱為“短路”行為。
實例:
public class ShortCircuitExample {
public static void main(String[] args) {
int a = 10;
int b = 0;
// 這是一個安全的檢查,因為如果 a < 5 為 false,則不會執(zhí)行 b / a,從而避免了除以零的錯誤
if (a < 5 && b / a > 0) {
System.out.println("Both conditions are true");
} else {
System.out.println("At least one condition is false");
}
// 輸出: At least one condition is false
}
}在這個例子中,即使 b / a > 0 表達式在單獨評估時會導(dǎo)致除以零的運行時錯誤,但由于 a < 5 為 false,&& 運算符短路了,不評估 b / a > 0,從而避免了錯誤。
短路邏輯或||
|| 運算符只要左右兩個表達式中有一個為 true 就返回 true。如果第一個表達式為 true,則整個表達式的結(jié)果立即確定為 true,并且不會評估第二個表達式。
實例:
public class ShortCircuitOrExample {
public static void main(String[] args) {
int a = 10;
int b = 0;
// 如果第一個條件 a > 5 為 true,則不會評估第二個條件 b / a > 0,從而避免了除以零的錯誤
if (a > 5 || b / a > 0) {
System.out.println("At least one condition is true");
} else {
System.out.println("Both conditions are false");
}
// 輸出: At least one condition is true
}
}在這個例子中,由于 a > 5 為 true,|| 運算符短路了,不評估 b / a > 0,從而避免了除以零的錯誤。
位運算符
| 運算符 | 描述 | 例子 | 類似于 | 結(jié)果 | 十進制 |
|---|---|---|---|---|---|
| & | AND,按位與處理兩個長度相同的二進制數(shù),兩個相應(yīng)的二進位都為 1,該位的結(jié)果值才為 1,否則為 0。 | x = 5 & 1 | 0101 & 0001 | 0001 | 1 |
| | | OR,按位或處理兩個長度相同的二進制數(shù),兩個相應(yīng)的二進位中只要有一個為 1,該位的結(jié)果值為 1。 | x = 5 | 1 | 0101 | 0001 | 0101 | 5 |
| ~ | 取反,取反是一元運算符,對一個二進制數(shù)的每一位執(zhí)行邏輯反操作。使數(shù)字 1 成為 0,0 成為 1。 | x = ~ 5 | ~0101 | 1010 | -6 |
| ^ | 異或,按位異或運算,對等長二進制模式按位或二進制數(shù)的每一位執(zhí)行邏輯異按位或操作。操作的結(jié)果是如果某位不同則該位為 1,否則該位為 0。 | x = 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
| << | 左移,把 << 左邊的運算數(shù)的各二進位全部左移若干位,由 << 右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補 0。 | x = 5 << 1 | 0101 << 1 | 1010 | 10 |
| >> | 右移,把 >> 左邊的運算數(shù)的各二進位全部右移若干位,>> 右邊的數(shù)指定移動的位數(shù)。 | x = 5 >> 1 | 0101 >> 1 | 0010 | 2 |
| >>> | 無符號右移,與有符號右移位類似,除了左邊一律使用0 補位。 | x = 2 >>> 1 | 0010 >>> 1 | 0001 | 1 |
let g: number = 5; // 二進制: 0101 let h: number = 1; // 二進制: 0001 let i: number = g & h; // AND console.log(i); // 輸出: 1 (二進制: 0001) let j: number = g | h; // OR console.log(j); // 輸出: 5 (二進制: 0101) let k: number = ~g; // NOT console.log(k); // 輸出: -6 (二進制: 1010 取反后加1表示負數(shù),這里是補碼表示) let l: number = g ^ h; // XOR console.log(l); // 輸出: 4 (二進制: 0100) let m: number = g << 1; // 左移 console.log(m); // 輸出: 10 (二進制: 1010) let n: number = g >> 1; // 右移 console.log(n); // 輸出: 2 (二進制: 0010) let o: number = 2 >>> 1; // 無符號右移 console.log(o); // 輸出: 1 (對于正數(shù),無符號右移和有符號右移結(jié)果相同)
賦值運算符
| 運算符 | 例子 | 實例 | x 值 |
|---|---|---|---|
| = (賦值) | x = y | x = y | x = 5 |
| += (先進行加運算后賦值) | x += y | x = x + y | x = 15 |
| -= (先進行減運算后賦值) | x -= y | x = x - y | x = 5 |
| *= (先進行乘運算后賦值) | x *= y | x = x * y | x = 50 |
| /= (先進行除運算后賦值) | x /= y | x = x / y | x = 2 |
let p: number = 10; let q: number = 5; p = q; // 賦值 console.log(p); // 輸出: 5 p += q; // 加后賦值 console.log(p); // 輸出: 10 p -= q; // 減后賦值 console.log(p); // 輸出: 5 p *= q; // 乘后賦值 console.log(p); // 輸出: 25 p /= q; // 除后賦值 console.log(p); // 輸出: 5
三元運算符(?)
let r: boolean = true; let s: string = r ? "Yes" : "No"; console.log(s); // 輸出: Yes
類型運算符
typeof運算符
typeof 是一元運算符,返回操作數(shù)的數(shù)據(jù)類型
let t: number = 10;
let typeOfT: string = typeof t; // 獲取變量的類型
console.log(typeOfT); // 輸出: "number"
class MyClass {}
let myObj: MyClass = new MyClass();
let isInstanceOfMyClass: boolean = myObj instanceof MyClass;
// 檢查對象是否是某個構(gòu)造函數(shù)的實例
console.log(isInstanceOfMyClass); // 輸出: trueinstanceof
其他運算符
負號運算符(-)
// 對正數(shù)應(yīng)用負號運算符 let positiveNumber: number = 10; let negativeNumber: number = -positiveNumber; console.log(negativeNumber); // 輸出: -10 // 對負數(shù)應(yīng)用負號運算符(相當于取絕對值后再加上負號,但結(jié)果仍是正數(shù), //如果原數(shù)是負數(shù)的話其絕對值會變?yōu)槠湎喾磾?shù)再取負還是原數(shù)) let anotherNegativeNumber: number = -5; let result: number = -anotherNegativeNumber; console.log(result); // 輸出: 5 // 直接對字面量數(shù)值應(yīng)用負號運算符 let literalNegativeNumber: number = -7; console.log(literalNegativeNumber); // 輸出: -7 // 在表達式中使用負號運算符 let x: number = 5; let y: number = -3; let sum: number = x + (-y); // 相當于 x + y,但這里顯式地使用了負號運算符來取y的相反數(shù) console.log(sum); // 輸出: 8 // 注意:負號運算符不能用于非數(shù)值類型,否則會引發(fā)類型錯誤 // let stringValue: string = "10"; // let invalidOperation: number = -stringValue; // 這會編譯錯誤,因為不能對字符串類型應(yīng)用負號運算符
請注意,負號運算符只能用于數(shù)值類型。如果你嘗試對非數(shù)值類型(如字符串或布爾值)應(yīng)用負號運算符,TypeScript編譯器會拋出一個類型錯誤。在上面的注釋部分,我們提供了一個示例來說明這一點,但為了避免編譯錯誤,我們實際上沒有執(zhí)行這個無效操作。
字符串運算符: 連接運算符 (+)
+運算符可以拼接兩個字符串
let t: number = 10;
let typeOfT: string = typeof t; // 獲取變量的類型
console.log(typeOfT); // 輸出: "number"
class MyClass {}
let myObj: MyClass = new MyClass();
let isInstanceOfMyClass: boolean = myObj instanceof MyClass;
// 檢查對象是否是某個構(gòu)造函數(shù)的實例
console.log(isInstanceOfMyClass); // 輸出: true到此這篇關(guān)于TypeScript 運算符的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)TypeScript 運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析JavaScript中的array數(shù)組類型系統(tǒng)
除了對象之外,數(shù)組Array類型可能是javascript中最常用的類型了。而且,javascript中的數(shù)組與其他多數(shù)語言中的數(shù)組有著相當大的區(qū)別。本文將介紹javascript中的數(shù)組Array類型,非常不錯,感興趣的朋友一起看下吧2016-07-07
微信小程序picker組件兩列關(guān)聯(lián)使用方式
這篇文章主要介紹了微信小程序picker組件兩列關(guān)聯(lián)使用方式,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
js+canvas實現(xiàn)兩張圖片合并成一張圖片的方法
這篇文章主要介紹了js+canvas實現(xiàn)兩張圖片合并成一張圖片的方法,結(jié)合實例形式分析了JavaScript結(jié)合HTML5 canvas實現(xiàn)圖片合并的操作技巧,并附帶了Java圖片合并的實現(xiàn)方法,需要的朋友可以參考下2019-11-11
javascript數(shù)組使用調(diào)用方法匯總
javascript數(shù)組使用調(diào)用方法匯總...2007-12-12
javascript進行數(shù)組追加方法小結(jié)
javascript中給數(shù)組加元素是一個非常簡單的問題,javascript本身就提供了大量這類函數(shù),我們可以使用js自帶函數(shù)快速給數(shù)組增加元素了,本文就javascript進行數(shù)組追加的方法做出如下小結(jié)。2014-06-06

