鴻蒙開發TypeScript語言:【運算符】

来源:https://www.cnblogs.com/mau123789/p/18136009
-Advertisement-
Play Games

運算符用於執行程式代碼運算,會針對一個以上操作數項目來進行運算。 考慮以下計算: 7 + 5 = 12 以上實例中 7、5 和 12 是操作數。 運算符 + 用於加值。 運算符 = 用於賦值。 TypeScript 主要包含以下幾種運算: 算術運算符 邏輯運算符 關係運算符 按位運算符 賦值運算符 ...


運算符用於執行程式代碼運算,會針對一個以上操作數項目來進行運算。

考慮以下計算:

7 + 5 = 12

以上實例中 7、5 和 12 是操作數。

運算符 + 用於加值。

運算符 = 用於賦值。

TypeScript 主要包含以下幾種運算:

  • 算術運算符
  • 邏輯運算符
  • 關係運算符
  • 按位運算符
  • 賦值運算符
  • 三元/條件運算符
  • 字元串運算符
  • 類型運算符

算術運算符

假定 y=5,下麵的表格解釋了這些算術運算符的操作:

運算符 描述 例子 x 運算結果 y 運算結果
+ 加法 x=y+2 7 5
- 減法 x=y-2 3 5
* 乘法 x=y*2 10 5
/ 除法 x=y/2 2.5 5
% 取模(餘數) x=y%2 1 5
++ 自增 x=++y 6 6
x=y++ 5 6
-- 自減 x=--y 4 4
x=y-- 5 4

實例

var num1:number = 10 
var num2:number = 2
var res:number = 0
    
res = num1 + num2 
console.log("加:        "+res); 

res = num1 - num2; 
console.log("減: "+res) 

res = num1*num2 
console.log("乘:    "+res) 

res = num1/num2 
console.log("除:   "+res)
    
res = num1%num2 
console.log("餘數:   "+res) 

num1++ 
console.log("num1 自增運算: "+num1) 

num2-- 
console.log("num2 自減運算: "+num2)

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var num1 = 10;
var num2 = 2;
var res = 0;
res = num1 + num2;
console.log("加:        " + res);
res = num1 - num2;
console.log("減: " + res);
res = num1 * num2;
console.log("乘:    " + res);
res = num1 / num2;
console.log("除:   " + res);
res = num1 % num2;
console.log("餘數:   " + res);
num1++;
console.log("num1 自增運算: " + num1);
num2--;
console.log("num2 自減運算: " + num2);

執行以上 JavaScript 代碼,輸出結果為:

加:        12
減: 8
乘:    20
除:   5
餘數:   0
num1 自增運算: 11
num2 自減運算: 1

關係運算符

關係運算符用於計算結果是否為 true 或者 false。

x=5,下麵的表格解釋了關係運算符的操作:

運算符 描述 比較 返回值
== 等於 x==8 false
x==5 true
!= 不等於 x!=8 true
> 大於 x>8 false
< 小於 x<8 true
>= 大於或等於 x>=8 false
<= 小於或等於 x<=8 true

實例

var num1:number = 5;
var num2:number = 9;
 
console.log("num1 的值為: "+num1); 
console.log("num2 的值為:"+num2);
 
var res = num1>num2 
console.log("num1 大於n num2: "+res)
 
res = num1<num2 
console.log("num1 小於 num2: "+res)  
 
res = num1>=num2 
console.log("num1 大於或等於  num2: "+res)
 
res = num1<=num2
console.log("num1 小於或等於 num2: "+res)  
 
res = num1==num2 
console.log("num1 等於 num2: "+res)  
 
res = num1!=num2  
console.log("num1 不等於 num2: "+res)

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var num1 = 5;
var num2 = 9;
console.log("num1 的值為: " + num1);
console.log("num2 的值為:" + num2);
var res = num1 > num2;
console.log("num1 大於n num2: " + res);
res = num1 < num2;
console.log("num1 小於 num2: " + res);
res = num1 >= num2;
console.log("num1 大於或等於  num2: " + res);
res = num1 <= num2;
console.log("num1 小於或等於 num2: " + res);
res = num1 == num2;
console.log("num1 等於 num2: " + res);
res = num1 != num2;
console.log("num1 不等於 num2: " + res);

執行以上 JavaScript 代碼,輸出結果為:

num1 的值為: 5
num2 的值為:9
num1 大於n num2: false
num1 小於 num2: true
num1 大於或等於  num2: false
num1 小於或等於 num2: true
num1 等於 num2: false
num1 不等於 num2: true

邏輯運算符

邏輯運算符用於測定變數或值之間的邏輯。

給定 x=6 以及 y=3,下表解釋了邏輯運算符:

運算符 描述 例子
&& and (x < 10 && y > 1) 為 true
! not !(x==y) 為 true

實例

var avg:number = 20; 
var percentage:number = 90; 
 
console.log("avg 值為: "+avg+" ,percentage 值為: "+percentage);
    
var res:boolean = ((avg>50)&&(percentage>80)); 
console.log("(avg>50)&&(percentage>80): ",res);
 
var res:boolean = ((avg>50)||(percentage>80)); 
console.log("(avg>50)||(percentage>80): ",res);
 
var res:boolean=!((avg>50)&&(percentage>80)); 
console.log("!((avg>50)&&(percentage>80)): ",res);

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var avg = 20;
var percentage = 90;
console.log("avg 值為: " + avg + " ,percentage 值為: " + percentage);
var res = ((avg > 50) && (percentage > 80));
console.log("(avg>50)&&(percentage>80): ", res);
var res = ((avg > 50) || (percentage > 80));
console.log("(avg>50)||(percentage>80): ", res);
var res = !((avg > 50) && (percentage > 80));
console.log("!((avg>50)&&(percentage>80)): ", res);

執行以上 JavaScript 代碼,輸出結果為:

avg 值為: 20 ,percentage 值為: 90
(avg>50)&&(percentage>80):  false
(avg>50)||(percentage>80):  true
!((avg>50)&&(percentage>80)):  true

短路運算符(&& 與 ||)

&& 與 || 運算符可用於組合表達式。 && 運算符只有在左右兩個表達式都為 true 時才返回 true。

考慮以下實例:

var a = 10 
var result = ( a<10 && a>5)

以上實例中 a < 10 與 a > 5 是使用了 && 運算符的組合表達式,第一個表達式返回了 false,由於 && 運算需要兩個表達式都為 true,所以如果第一個為 false,就不再執行後面的判斷(a > 5 跳過計算),直接返回 false。

|| 運算符只要其中一個表達式為 true ,則該組合表達式就會返回 true。

考慮以下實例:

var a = 10 
var result = ( a>5 || a<10)

以上實例中 a > 5 與 a < 10 是使用了 || 運算符的組合表達式,第一個表達式返回了 true,由於 || 組合運算只需要一個表達式為 true,所以如果第一個為 true,就不再執行後面的判斷(a < 10 跳過計算),直接返回 true。

位運算符

位操作是程式設計中對位模式按位或二進位數的一元和二元操作。

運算符 描述 例子 類似於 結果 十進位
& AND,按位與處理兩個長度相同的二進位數,兩個相應的二進位都為 1,該位的結果值才為 1,否則為 0。 x = 5 & 1 0101 & 0001 0001 1
OR,按位或處理兩個長度相同的二進位數,兩個相應的二進位中只要有一個為 1,該位的結果值為 1。 x = 5 1 0101
~ 取反,取反是一元運算符,對一個二進位數的每一位執行邏輯反操作。使數字 1 成為 0,0 成為 1。 x = ~ 5 ~0101 1010 -6
^ 異或,按位異或運算,對等長二進位模式按位或二進位數的每一位執行邏輯異按位或操作。操作的結果是如果某位不同則該位為 1,否則該位為 0。 x = 5 ^ 1 0101 ^ 0001 0100 4
<< 左移,把 << 左邊的運算數的各二進位全部左移若幹位,由 << 右邊的數指定移動的位數,高位丟棄,低位補 0。 x = 5 << 1 0101 << 1 1010 10
>> 右移,把 >> 左邊的運算數的各二進位全部右移若幹位,>> 右邊的數指定移動的位數。 x = 5 >> 1 0101 >> 1 0010 2
>>> 無符號右移,與有符號右移位類似,除了左邊一律使用0 補位。 x = 2 >>> 1 0010 >>> 1 0001 1

實例

var a:number = 2;   // 二進位 10 
var b:number = 3;   // 二進位 11
    
var result; 
        
result = (a & b);     
console.log("(a & b) => ",result)
            
result = (a | b);          
console.log("(a | b) => ",result)  
        
result = (a ^ b);  
console.log("(a ^ b) => ",result);
    
result = (~b); 
console.log("(~b) => ",result);
 
result = (a << b); 
console.log("(a << b) => ",result); 
 
result = (a >> b); 
console.log("(a >> b) => ",result);
 
result = (a >>> 1); 
console.log("(a >>> 1) => ",result);

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var a = 2; // 二進位 10 
var b = 3; // 二進位 11
var result;
result = (a & b);
console.log("(a & b) => ", result);
result = (a | b);
console.log("(a | b) => ", result);
result = (a ^ b);
console.log("(a ^ b) => ", result);
result = (~b);
console.log("(~b) => ", result);
result = (a << b);
console.log("(a << b) => ", result);
result = (a >> b);
console.log("(a >> b) => ", result);
result = (a >>> 1);
console.log("(a >>> 1) => ", result);

執行以上 JavaScript 代碼,輸出結果為:

(a & b) =>  2
(a | b) =>  3
(a ^ b) =>  1
(~b) =>  -4
(a << b) =>  16
(a >> b) =>  0
(a >>> 1) =>  1

賦值運算符

賦值運算符用於給變數賦值。

給定 x=10y=5,下麵的表格解釋了賦值運算符:

運算符 例子 實例 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

類似的邏輯運算符也可以與賦值運算符聯合使用:<<=, >>=, >>>=, &=, |= 與 ^=。

實例

var a: number = 12 
var b:number = 10  
 
a = b 
console.log("a = b: "+a)
 
a += b
console.log("a+=b: "+a)
 
a -= b 
console.log("a-=b: "+a)
 
a *= b 
console.log("a*=b: "+a)
 
a /= b 
console.log("a/=b: "+a)    
 
a %= b 
console.log("a%=b: "+a)

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var a = 12;
var b = 10;
a = b;
console.log("a = b: " + a);
a += b;
console.log("a+=b: " + a);
a -= b;
console.log("a-=b: " + a);
a *= b;
console.log("a*=b: " + a);
a /= b;
console.log("a/=b: " + a);
a %= b;
console.log("a%=b: " + a);

執行以上 JavaScript 代碼,輸出結果為:

a = b: 10
a+=b: 20
a-=b: 10
a*=b: 100
a/=b: 10
a%=b: 0

三元運算符 (?)

三元運算有 3 個操作數,並且需要判斷布爾表達式的值。該運算符的主要是決定哪個值應該賦值給變數。

Test ? expr1 : expr2
  • Test − 指定的條件語句
  • expr1 − 如果條件語句 Test 返回 true 則返回該值
  • expr2 − 如果條件語句 Test 返回 false 則返回該值

讓我們看下以下實例:

var num:number = -2 
var result = num > 0 ? "大於 0" : "小於 0,或等於 0" 
console.log(result)

實例中用於判斷變數是否大於 0。

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var num = -2;
var result = num > 0 ? "大於 0" : "小於 0,或等於 0";
console.log(result);

以上實例輸出結果如下:

小於 0,或等於 0

類型運算符

typeof 運算符

typeof 是一元運算符,返回操作數的數據類型。

查看以下實例:

var num = 12 
console.log(typeof num);   //輸出結果: number

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var num = 12;
console.log(typeof num); //輸出結果: number

以上實例輸出結果如下:

number

instanceof

instanceof 運算符用於判斷對象是否為指定的類型,後面章節我們會具體介紹它。

其他運算符

負號運算符(-)

更改操作數的符號,查看以下實例:

var x:number = 4 
var y = -x; 
console.log("x 值為: ",x);   // 輸出結果 4 
console.log("y 值為: ",y);   // 輸出結果 -4

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var x = 4;
var y = -x;
console.log("x 值為: ", x); // 輸出結果 4 
console.log("y 值為: ", y); // 輸出結果 -4

以上實例輸出結果如下:

x 值為:  4
y 值為:  -4

字元串運算符: 連接運算符 (+)

  • 運算符可以拼接兩個字元串,查看以下實例:
var msg:string = "RUNOOB"+".COM" 
console.log(msg)

使用 tsc 命令編譯以上代碼得到如下 JavaScript 代碼:

var msg = "RUNOOB" + ".COM";
console.log(msg);

以上實例輸出結果如下:

RUNOOB.COM

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以Flink為主的計算引擎配合OLAP查詢分析引擎組合進而構建實時數倉**,其技術方案的選擇是我們在技術選型過程中最常見的問題之一。也是很多公司和業務支持過程中會實實在在遇到的問題。 很多人一提起實時數倉,就直接大談特談Hudi,Flink的流批一體等,但實際上,**實時數倉包括任何架構體系的構建如... ...
  • 在實際項目中,從Kafka到HDFS的數據是每天自動生成一個文件,按日期區分。而且Kafka在不斷生產數據,因此看看kettle是不是需要時刻運行?能不能按照每日自動生成數據文件? 為了測試實際項目中的海豚定時調度從Kafka到HDFS的Kettle任務情況,特地提前跑一下海豚定時調度這個任務,看看 ...
  • 在Centos7中使用的包管理工具是yum,當然使用包管理工具安裝也是最方便的。 本文操作內容需要在root用戶下,否則有些步驟無法成功執行。 系統環境信息展示 安裝 MySQL 提供的 RPM wget https://dev.mysql.com/get/mysql80-community-rel ...
  • 本文介紹瞭如何結合LFU淘汰策略與訪問頻率優化,實現在電商平臺等業務場景下,精準管理Redis中20萬熱點數據。 ...
  • 主從延遲調優思路 1、什麼是主從延遲? 本質是從庫的回放跟不上主庫,回放階段的延遲 2、主從延遲常見的原因有哪些? 1、大事務,從庫回放時間較長,導致主從延遲 2、主庫寫入過於頻繁,從庫回放跟不上 3、參數配置不合理 4、主從硬體差異 5、網路延遲 6、表沒有主鍵或者索引大量頻繁的更新 7、一些讀寫 ...
  • 我們討論面試中各大廠的SQL演算法面試題,往往核心考點就在於視窗函數,所以掌握好了視窗函數,面對SQL演算法面試往往事半功倍。 ...
  • MySQL安裝 官方: https://www.mysql.com/ MySQL官方提供了兩種不同的版本: 社區版本(MySQL Community Server) 免費, MySQL不提供任何技術支持 商業版本(MySQL Enterprise Edition) 收費,可以使用30天,官方提供技術 ...
  • 本次按照目前最新版本Sqlserver2022進行記錄 先決條件 任何受支持的 Linux 發行版上的 Docker 引擎 1.8 及更高版本。 有關詳細信息,請參閱 Install Docker(安裝 Docker)。 有關硬體要求和處理器支持的詳細信息,請參閱SQL Server 2022:硬體 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...