學習筆記整理-JS-03-表達式和運算符

[[toc]]

一、表達式和運算符

1. 表達式

expression.png

  • 表達式種類
    • 算術、關系、邏輯、賦值、綜合

二、JS基本表達式

1. 算術運算符

意義運算符
+
-
*
/
取余%
  • 加減乘除

    • 加減的符號和數學一致,乘號是*號,除法是/
    • 默認情況,乘除法的優先級高于加法和減法;必要時可以使用圓括號來改變運算的順序。
  • 加號的兩種作用

    • 加號有"加法"和"連字符"兩種作用
    • 如果加號兩邊的操作數都是數字,則為"加法",否則為連字符。
  • 取余運算

    • 取余運算也叫作“求模運算”,用百分號%表示
    • a%b表示求a除以b的余數,它不關心整數部分,只關心余數
          11 % 4;   //3, 因為11除以4余數是320 % 6;   //2, 因為20除以6余數是212 % 3;   //O, 因為能夠整除,余數是03 % 9;    //3, 因為商0,余數是3  
      
  • 隱式類型轉換

    • 如果參與數學運算的某操作數不是數字型,那么JavaScript會自動將此操作數轉換為數字型
        3 * '4' // 12
      
    • 隱式轉換的本質是內部調用Number()函數
      Number(true)// ---> 1  true + true // 2
      Number(false)//---> 0  false + 2   // 2
      3 * '2天'                          // NaN    
      
  • 有關IEEE754

    • JavaScript中,有些小數的數學運算不是很精準
      0.1 + 0.2 // 0.30000000000000004
      
    • JavaScript使用了IEEE754二進制浮點數算術標準,這會使一些個別的小數運算產生丟失精度問題
      • 解決辦法:在進行小數運算時,要調用數字的toFixed()方法保留指定的小數位數
  • 冪和開根號

    • JavaScript中沒有提供冪計算、開根號的運算符。需要使用Math對象的相關方法進行計算。
        Math.pow(2,3)  // 8  Math.pow(3,2)  // 9Math.sqrt(81)  // 9Math.sqrt(-81) // NaN
      
  • 向上取整和向下取整

    • Math.ceil()向上取整;Math.floor()向下取整
          Math.ceil(2.4)   // 3Math.floor(2.4)  // 2   Math.ceil(-2.4)   // -2Math.floor(-2.4)  // -3     Math.ceil(2)   // 2Math.floor(2)  // 2     
      

2. 關系運算符

意義運算符
大于>
小于<
大于或等于>=
小于或等于<=
等于=
不等于!=
全等于===
不全等于!==
  • 大于和小于

    • 大于>、小于<兩個符號和數學相同
  • "大于等于"運算符是>=,"小于等于"運算符是<=

  • 判斷是否相等

    • 如果想比較兩個值是否相等,此時應該使用==運算符
    • JavaScript中等號=表示賦值,而并不是相等,判斷相等應該使用==運算符。
    • 相等和全等
      • 兩個等號==運算符不比較值的類型,它會進行隱式轉換后比較值是否相等
      • 三個等號===運算符,不僅比較值是否相同,也比較類型是否相同
          1 == true   // true1 === true  // false0 == false  // true0 === false // false0 == undefined // false0 === undefined // falseundefined == null // trueundefined === null // false
        
      • nullundefined==進行比較涉及隱式強制類型轉換,ES5規范中規定:
        • 如果xnull,yundefined,則結果為true
        • 如果xundefined,ynull,則結果為true
      • nullundefined===比較時結果為false是因為類型不同:
        • typeof null --> object
        • typeof undefined --> undefined
      • NaN不自等
        • NaN作為一個特殊的數字類型值,它在用==比較的時候也有特殊的結果
              NaN == NaN  // falseNaN === NaN // false
          
      • 如何判斷某變量值為NaN
        • isNaN()函數可以用來判斷變量值是否為NaN
              isNaN(NaN)  // trueisNaN(5)    // false
          
        • isNaN()也不好用,它的機理是:只要該變量傳入Number()的執行結果是NaN,則isNaN()函數都會得到true
            isNaN(undefined)  // trueisNaN('3天')      // trueisNaN(null)       // false
          
      • 不相等和不全等
        • !=表示不相等
        • !==表示不全等
         5 != 6   // true5 !== 6  // true5 != '5'   // false5 !== '5'  // true
        
      • js中沒有連比,絕對不可能存在3 <= a <= 15

3. 邏輯運算符

非:! 與:&& 或:||

  • !表示"非",也可以稱為"置反運算"
  • !是一個"單目運算符",只需要一個操作數
  • 置反運算的結果一定是布爾值
      !true         // false!false        // true    !0            // true    !undefined    // true!''           // true!'zhangsan'   // false!!true        // true!!0           // false!!''          // false!!'zhangsan'  // true                
    

4. 與運算符

  • &&表示"并且",稱為"與運算",全真才為真
  • 短路原則
    • a && b 運算中:a真,表達式值為b,a假,表達式值為a
        3 && 6           // 6undefined && 15  // undefined15 && undefined  // undefinednull && 2        // null'' && 16         // ''NaN && undefined // NaN  
      

5. 或運算符

  • ||表示"或者",稱為"或運算",有真就真
  • a || b運算中:a真,表達式值為a, a假,表達式值為b
      3 || 6          // 30 || 6          // 6null || undefined // undefined'a' || 'b'      // 'a'NaN || null     // null
    
  • 邏輯值運算
      true && true   // truetrue && false   // falsefalse && true   // falsefalse && false   // false   true || true   // truetrue || false   // truefalse || true   // truefalse || false   // false         
    
  • 邏輯運算順序
    • 邏輯運算的優先級是:非--> 與--> 或
        !true || true     // ture3 && 4 || 5 && 6  // 4
      

6. 賦值表達式

意義運算符
賦值=
``````+=
-=
快捷賦值*=
/=
``````%=
自增運算++
自減運算
  • JS中,=表示賦值,==判斷是否相等(不判斷類型),===判斷是否全等。
  • 賦值運算符會將等號右邊的數值,賦予等號左邊的變量。
  • 賦值運算也會產生值
    equal.png
  • 快捷賦值
    equal-1.png
    equal-2.png

7. 自增/自減運算法

increment.png
increment-1.png

8. 綜合表達式

  • 運算順序
    synthesis.png
  • 變量的范圍表示
    synthesis-1.png

9. 重點內容

  • 表達式有哪幾種? 每種表達式分別有哪些運算符?
  • 每種表達式中運算順序是什么?綜合運算順序是什么?
  • 什么是短路計算? 3 && 11 的結果是多少? 3 || 13 呢?
  • a ++ 和 ++ a 有什么區別?
      var a = 3;var b = 4;console.log(a++ + b++ + ++a + ++b); // 18
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35063.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓源碼分析(10)Lifecycle實現組件生命周期管理

參考&#xff1a; https://developer.android.google.cn/topic/libraries/architecture/lifecycle?hlzh-cn#java https://developer.android.google.cn/reference/androidx/lifecycle/Lifecycle 文章目錄 1、概述2、LifeCycle類3、LifecycleOwner類4、LifecycleObserver類 1、…

數據庫字段命名導致的SQL報錯

1.表設計 create table variables (id bigint not null comment 主鍵,business_key varchar(128) null comment 業務key,key varchar(128) null comment Map中的key,value varchar(255) null comment…

Centos yum命令大全

1.使用YUM查找軟件包 $ yum search python 2.列出所有可安裝的軟件包 $ yum list | grep python 3.列出所有可更新的軟件包 $ yum list updates 4.列出所有已安裝的軟件包 $ yum list installed | grep python

[GIN-debug] [ERROR] listen tcp: address 8080: missing port in address

學習Golang_gin框架的第一天 遇到一下報錯 : [GIN-debug] [ERROR] listen tcp: address 8080: missing port in address 錯誤代碼 : package mainimport "github.com/gin-gonic/gin"func main() {router : gin.Default()router.GET("/index", func…

910數據結構(2014年真題)

算法設計題 問題1 已知一個帶頭結點的單鏈表head&#xff0c;假設結點中的元素為整數&#xff0c;試編寫算法&#xff1a;按遞增次序輸出單鏈表中各個結點的數據元素&#xff0c;并釋放結點所占的存儲空間。要求&#xff1a;(1)用文字給出你的算法思想&#xff1b;(2)不允許使…

nginx禁用3DES和DES弱加密算法

nginx禁用3DES和DES弱加密算法 項目背景 最近護網行動&#xff0c;收到漏洞報告&#xff0c;如下&#xff1a; 漏洞名稱SSL/TLS協議信息泄露漏洞(CVE-2016-2183)【原理掃描】詳細描述TLS是安全傳輸層協議&#xff0c;用于在兩個通信應用程序之間提供保密性和數據完整性。 TLS…

opencv 基礎50-圖像輪廓學習03-Hu矩函數介紹及示例-cv2.HuMoments()

什么是Hu 矩&#xff1f; Hu 矩&#xff08;Hu Moments&#xff09;是由計算機視覺領域的科學家Ming-Kuei Hu于1962年提出的一種圖像特征描述方法。這些矩是用于描述圖像形狀和幾何特征的不變特征&#xff0c;具有平移、旋轉和尺度不變性&#xff0c;適用于圖像識別、匹配和形狀…

C語言鏈表操作

目錄 鏈表基本操作 刪除重復元素 查找倒數第N個節點 查找中間節點 約瑟夫環 循環鏈表 合并有序鏈表 逆置鏈表 逆置鏈表(雙向鏈表) 鏈表基本操作 //linklist.c#include "linklist.h" #include <stdlib.h>struct node *head NULL; struct node *tail…

React 18 state 狀態更新函數

參考文章 把一系列 state 更新加入隊列 設置組件 state 會把一次重新渲染加入隊列。但有時可能會希望在下次渲染加入隊列之前對 state 的值執行多次操作。為此&#xff0c;了解 React 如何批量更新 state 會很有幫助。 React 會對 state 更新進行批處理 在下面的示例中&…

Docker查看、創建、進入容器相關的命令

1.查看、創建、進入容器的指令 用-it指令創建出來的容器&#xff0c;創建完成之后會立馬進入容器。退出之后立馬關閉容器。 docker run -it --namec1 centos:7 /bin/bash退出容器&#xff1a; exit查看現在正在運行的容器命令&#xff1a; docker ps查看歷史容器&#xff0…

docker小白第二天

centos上安裝docker docker官網&#xff0c;docker官網&#xff0c;找到下圖中的doc文檔。 進入如下頁面 選中manuals&#xff0c;安裝docker引擎。 最終centos下的docker安裝文檔鏈接&#xff1a;安裝文檔鏈接. 具體安裝步驟&#xff1a; 1、打開Centos&#xff0c;輸入命…

【BASH】回顧與知識點梳理(十五)

【BASH】回顧與知識點梳理 十五 十五. 指令與文件的搜尋15.1 腳本文件名的搜尋which (尋找『執行檔』) 15.2 文件檔名的搜尋whereis (由一些特定的目錄中尋找文件文件名)locate / updatedbfind與時間有關的選項與使用者或組名有關的參數與文件權限及名稱有關的參數額外可進行的…

JVM垃圾回收

如何確定垃圾 對堆垃圾回收前的第一步就是要判斷哪些對象已經死亡&#xff08;即不能再被任何途徑使用的對象&#xff09; 引用計數法 這個方法就是為對象添加計數器來標識引用個數&#xff0c;計數器為 0 的對象就是不可能再被使用的。但是這種方法存在循環引用問題&#x…

布谷鳥配音:一站式配音軟件

這是一款智能語音合成軟件&#xff0c;可以快速將文字轉換成語音&#xff0c;擁有多種真人模擬發音&#xff0c;可以選擇不同男聲、女聲、童聲&#xff0c;以及四川話、粵語等中文方言和外語配音&#xff0c;并且可對語速、語調、節奏、數字讀法、多音字、背景音等進行全方位設…

less、sass的使用及其區別

CSS預處理器 CSS 預處理器是一種擴展了原生 CSS 的工具&#xff0c;它們添加了一些編程語言的特性&#xff0c;以便更有效地編寫、組織和維護樣式代碼。預處理器允許開發者使用變量、嵌套、函數、混合等功能&#xff0c;從而使 CSS 更具可讀性、可維護性和重用性&#xff0c;特…

學習筆記整理-JS-01-語法與變量

文章目錄 一、語法與變量1. 初識JavaScript2. JavaScript的歷史3. JavaScript與ECMAScript的關系4. JavaScript的體系5. JavaScript的語言風格和特性 二、語法1. JavaScript的書寫位置2. 認識輸出語句3. REPL環境&#xff0c;交互式解析器4. 變量是什么5. 重點內容 一、語法與變…

使用python快速搭建HTTP服務實現局域網網頁瀏覽或文件傳輸

1.使用命令行&#xff08;CMD&#xff09;來快速搭建一個HTTP服務器 你可以借助Python的http.server模塊。以下是在命令行中使用Python快速搭建HTTP服務器的步驟&#xff1a; 打開命令提示符&#xff08;CMD&#xff09;。 進入你想要共享文件的目錄。使用 cd 命令來切換到目…

二、編寫第一個 Spring MVC 程序

文章目錄 一、編寫第一個 Spring MVC 程序 一、編寫第一個 Spring MVC 程序 代碼示例 創建 maven 項目&#xff0c;以此項目為父項目&#xff0c;在父項目的 pom.xml 中導入相關依賴 <dependencies><dependency><groupId>junit</groupId><artifactI…

分支和循環語句(2)(C語言)

目錄 do...while()循環 do語句的語法 do語句的特點 do while循環中的break和continue 練習 goto語句 do...while()循環 do語句的語法 do 循環語句; while(表達式); do語句的特點 循環至少執行一次&#xff0c;使用的場景有限&#xff0c;所以不是經常使用。 #inc…

【uniapp】uniapp自動導入自定義組件和設置分包:

文章目錄 一、自動導入自定義組件&#xff1a;二、設置分包和預加載&#xff1a; 一、自動導入自定義組件&#xff1a; 【Volar 官網】https://github.com/vuejs/language-tools 二、設置分包和預加載&#xff1a; 【官方文檔】https://uniapp.dcloud.net.cn/collocation…