JS基礎-表達式和運算符

来源:https://www.cnblogs.com/haloujava/archive/2023/09/07/17684873.html
-Advertisement-
Play Games

一、小程式代碼構成 1.創建文件 在app.json文件中,pages中,直接寫上要添加的文件的名及路徑,然後保存即可(此方法在Mac上親測沒成功), Mac創建頁面的方式: pages文件右鍵,新建文件,然後輸入文件名 ![](https://img2023.cnblogs.com/blog/29 ...


表達式:是由操作數和運算符(可選)構成的並產生運算結果的語法結構。例如:3+5

運算符:進行計算或者邏輯運算的符號,比如表達式中的 + 號

表達式分類:算術、關係、邏輯、賦值、組合

算術運算符

以下符號都是算數運算符,運算符的關鍵詞就是運算

意義 運算符
+
-
*
/
取餘 %

在算數表達式中, 乘法和除法的優先順序要高於加法和減法;

不過可以使用括弧來改變運算的順序


1 + 1 = 2

// 1 + 2 先於 乘4 運算 , 括弧改變了又相繼
(1+2) * 4 = 12

// 取餘操作,只關註餘數
11 % 3 = 2

// 能夠除盡的,餘數是0
9 % 3 = 0 ; 

隱式類型轉換

  • 如果參與數學運算的操作數不是數字類型,那麼JS會自動將操作數轉成數字型,。
  • 隱式轉換的本質是內部調用Number() 函數
    • 號比較特殊, 如果 是 數字 和 字元串 相加 表示連接,並不會發生隱式類型轉換
// 除了加號外都可以用隱式類型轉換, 因為 加號 會代表 連接符
3 * '4' = 12

// + 表示連接符,而非 運算符
3 + '4' = '34';

小數運算

在JS中,有些小數運算不是很精確,會有一些精度損失

在進行小數運算的時候,要調用 toFixed() 方法保留指定的小數位數

0.1 + 0.33 // 輸出  0.43000000000000005
// 使用 toFixed正確輸出
Number(0.1 + 0.33).toFixed(2)

其他相關運算

冪運算

  • 使用Math.pow() 函數進行冪運算
  • 使用Math.sqrt() 函數進行開根號
// 計算2的3次方
Math.pow(2,3);
// 9 開根號
Math.sqrt(9)

向上取整和向下取整

  • 使用函數 Math.ceil() 向上取整
  • 使用函數 Math.floor() 向下取整

Math.ceil(2.3) // 輸出3
Math.floor(2.3) // 輸出2

Math.ceil(-2.3) // 輸出 -2
Math.floor(-2.3)  // 輸出 -3

關係運算符

以下的符號都是關係運算符, 關係運算符的關鍵詞就是比較

意義 運算符
大於 >
小於 <
大於或等於 >=
小於或等於 <=
等於 =
不等於 !=
全等於 ===
不全等於 !==

== 和 === 的區別

== 雙等運算符不比較值的類型,它會進行隱式類型轉換後比較值是否相等

=== 三等運算符不僅比較值是否相同,也比較類型是否相同

特殊值比較

// 輸出true。
undefined == null ; 
// 輸出false。 因為類型不同,null 的類型為 object, undefined 類型為 undefined 。所以不相等
undefined === null ; 
// 輸出 false。 NaN不自等
NaN == NaN ; 

isNaN 函數

可以判斷是不是一個數字

// 輸出 true
isNaN(NaN); 
// 輸出false
isNaN(5);

isNaN 傳入 NaN 或者其他數字類型的值判斷比較準確,除了數字類型外的其他類型值判斷不准

isNaN(undefined); // true
isNaN('3天'); // true
isNaN(null); // false

邏輯運算符

以下的符號都是邏輯運算符, 邏輯運算符的關鍵詞就是真假。其運算的結果 要麼 是 真(true) 要麼是假(false)

意義 運算符 解釋 舉例
! 表示 非 也可以說是 置反運算, 其結果一定一個bool值 !true = false
&& 表示 並且 ,多個條件都為真才真,口訣: 一假則假 。 具有短路功能 true && true = true

邏輯運算符可以比較任意值,不過輸出結果只能為 布爾值

表示取反的意思

//false
!true ; 
// true
!false; 
// true
!0 
// true
!undefined 
!'' // true
!'halouworld' //非空字元串取反 為 false

與表示有多個併列條件,只有都滿足的時候才會向下執行,否則跳過。通常和 後面講到的 IF 配合使用

使用口訣:一假則假

<script>

        var a = 1, b = 2, c=3, d=4;

        // a 雖然和b 相等, 但是 c和d不相等,所以結果還是不想等
        if( a== b && c==d) {
            console.log('都成立')
        } else {
            console.log('都不成立')
        } 

</script>

或表示有多個併列條件,只要其中一個滿足就會向下執行,否則跳過。通常和 後面講到的 IF 配合使用

使用口訣:一真則真

<script>
        
      var a = 1, b = 1, c=3, d=4;
      // a == b 後者 c==d 只要有個一個相同就相等, 結果輸出相等
      if( a== b || c==d) {
          console.log('成立')
      } else {
          console.log('不成立')
      } 
</script>

短路

短路就是 在一組 或者 當中 ,如果提前運算出了結果, 就結束了, 後面的表達式則不會被執行

  • 與 1!=1 &&  1=2 , 當前面的表達式 1 != 1假, 所以整個表達式結果為, 後面的 1=2 則不會被執行到, 參考口訣 一假則假
  • 11 || 12 , 當前面的表示式  1==1,所以整個表示式結果為, 後面的 1==2 則不會被執行到, 參考口訣 一真則真

賦值運算符

以下的符號都是賦值運算符, 賦值運算符的關鍵詞就是賦值。即符號右邊的值賦值給左邊

符號 意義 舉例
= 賦值 a = 10
+= 左右相加並賦值給左邊 a = 10 ; b = 10 ;a +=b
-= 左邊減右邊並賦值給左邊 a -= b
*= 左右相乘並賦值給左邊 a *= b
/= 左邊除以右邊並賦值給左邊 a /= b
%/ 左邊取餘右邊並賦值給左邊 a %= b
++ 自增運算(自身增1) a++ ; ++a
-- 自減運算 (自身減1) a--; --a;

賦值運算符就是將右邊的賦值給左邊

# 左邊的值賦值給右邊的變數
a = 1;
# 連續賦值
var a,b,c;
a = b = c = 1;
console.log(a);
console.log(b);
console.log(c);

+= 等舉例

// 等價於 a = a + 5;
a += 5; 

表達式組合

由運算符和操作數共同組成的複雜運算表達式

其中的運算順序(優先順序)

非運算 -> 數學運算 -> 關係運算 -> 邏輯運算

舉例

// 輸出true
5 < 3 + 3; 
 // 輸出 true ,這種複雜的表達式在不加括弧的時候看著比較亂
3 > 2 && 8 > 3+ 4
// !13 = false , 等價於 !Boolean(13)
// 輸出 true, 小於號左邊為false, 轉成整數值 Number(false) = 0 和 右邊的運算結果 3 相比較
!13 < 6 - 3

總結

特別註意 表示式組合當中,比較複雜的表達式,一定要加上括弧,方便以後閱讀理解

請關於一下啦^_^

微信公眾號


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

-Advertisement-
Play Games
更多相關文章
  • GaussDB的遷移場景越來越多,也越來越複雜,所以我們會不斷地進行探索和創新,讓我們的方案更完善,遷移過程更平滑。 ...
  • SqlServer 單用戶解決方案 USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) - FROM master..sysprocesses WHERE dbid= ...
  • 在上一篇文章中,我們介紹了彈性資料庫連接失效的背景,並探討了HikariCP連接池探活策略的相關內容。在本文中,我們將會繼續探討另一個線上常用的連接池——Druid,併為您介紹如何在使用Druid時實現最佳實踐的彈性資料庫連接池探活策略。 ...
  • 原文地址:https://www.mssqltips.com/sqlservertip/3598/troubleshooting-transactional-replication-latency-issues-in-sql-server/ 問題 我安裝了幾個SQL Server 2012實例的集群 ...
  • sidebar: auto # Android 調試橋 (adb) Android 調試橋 (adb) 是一種功能多樣的命令行工具,可讓您與設備進行通信。adb 命令可用於執行各種設備操作,例如安裝和調試應用。adb 提供對 Unix shell(可用來在設備上運行各種命令)的訪問許可權。它是一種客戶 ...
  • 在Service中使用系統dialog彈框,但是無法覆蓋全部,底部菜單依然可以被點擊,在某些場景下是不符合需求的 getDialog().getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR); 顯然是 dialog 的層級 ...
  • # 什麼是Promise (含如何判斷一個值是Promise) > 本文旨在對 Promise 的規範進行解釋, 便於讀者在學習 Promise 的過程中梳理 Promise 之間的操作關係, 不對具體的代碼實現和Promise用法進行解釋. > > 比如, 為什麼 [[MDN-await]](ht ...
  • 寫在前面:初次嘗試小程式,在不使用框架的情況下,如果遇到問題,可以儘量去參考官方文檔 1.scroll-view組件 scroll-view是一個可滑動的組塊.需要設置其中具體的height高度,並且在標簽中設置scroll-y="true"; 1 <scroll-view class="sceol ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...