JavaScript運算符

来源:http://www.cnblogs.com/OldJack/archive/2017/05/26/6910312.html
-Advertisement-
Play Games

JavaScript中的運算符分為以下幾類: 算術運算符 比較運算符 邏輯運算符 賦值運算符 1. 算術運算符 算術運算符用於執行變數與/或值之間的算術運算。 給定 y=5,下麵的表格解釋了這些算術運算符: 註意點: a. 自增和自減 遞增和遞減運算符可以放在變數前也可以放在變數後: 當放在變數前, ...


JavaScript中的運算符分為以下幾類:

  • 算術運算符
  • 比較運算符
  • 邏輯運算符
  • 賦值運算符

1. 算術運算符

算術運算符用於執行變數與/或值之間的算術運算。 給定 y=5,下麵的表格解釋了這些算術運算符:

註意點:

a. 自增和自減

遞增和遞減運算符可以放在變數前也可以放在變數後:

當放在變數前,假如x=2,那麼x++表達式執行後的值為3,x--表達式執行後的值為1;i++相當於i=i+1,i--相當於i=i-1;(先引用,後計算)

當放在變數後,表達式執行後的結果與上面相同,但引用該表達式的變數會馬上取到執行後的值。(先計算,後引用)

b. 單元運算符“-”除了可以表示減號,還可以表示負號,例如:x=-y;“+”除了可以表示加法,還可以用於字元串的拼接,例如:"abc"+"def"="abcdef"

c. js不同於python,是一門弱類型語言

靜態類型語言
一種在編譯期間就確定數據類型的語言。大多數靜態類型語言是通過要求在使用任一變數之前聲明其數據類型來保證這一點的。Java 和 C 是靜態類型語言。 
動態類型語言
一種在運行期間才去確定數據類型的語言,與靜態類型相反。VBScript 和 Python 是動態類型的,因為它們確定一個變數的類型是在您第一次給它賦值的時候。 
強類型語言
一種總是強制類型定義的語言。Java 和 Python 是強制類型定義的。您有一個整數,如果不明確地進行轉換 ,不能將把它當成一個字元串去應用。 
弱類型語言
一種類型可以被忽略的語言,與強類型相反。JS 是弱類型的。在JS中,可以將字元串 '12' 和整數 3 進行連接得到字元串'123',然後可以把它看成整數 123 ,所有這些都不需要任何的顯示轉換。 
所以說 Python 既是動態類型語言 (因為它不使用顯示數據類型聲明),又是強類型語言 (因為只要一個變數獲得了一個數據類型,它實際上就一直是這個類型了)。

d. NaN的運算關係

var d="yuan";
    d=+d;
    alert(d);//NaN:屬於Number類型的一個特殊值,當遇到將字元串轉成數字無效時,就會得到一個NaN數據
    alert(typeof(d));//Number

    //NaN特點:
    
    var n=NaN;
    
    alert(n>3);
    alert(n<3);
    alert(n==3);
    alert(n==NaN);
    
    alert(n!=NaN);//NaN參與的所有的運算都是false,除了!=

 

2. 比較運算符

比較和邏輯運算符用於測試 true 或者 false。給定 x=5,下麵的表格解釋了比較運算符:

註意點:

a. 字元串與數字比較

var bResult = "Blue" < "alpha";
alert(bResult); //輸出 true  
在上面的例子中,字元串 "Blue" 小於 "alpha",因為字母 B 的字元代碼是 66,字母 a 的字元代碼是 97。

比較數字和字元串

另一種棘手的狀況發生在比較兩個字元串形式的數字時,比如:

var bResult = "25" < "3";
alert(bResult); //輸出 "true"
上面這段代碼比較的是字元串 "25" 和 "3"。兩個運算數都是字元串,所以比較的是它們的字元代碼("2" 的字元代碼是 50,"3" 的字元代碼是 51)。

不過,如果把某個運算數該為數字,那麼結果就有趣了:

var bResult = "25" < 3;
alert(bResult); //輸出 "false"

這裡,字元串 "25" 將被轉換成數字 25,然後與數字 3 進行比較,結果不出所料。

總結:

比較運算符兩側如果一個是數字類型,一個是其他類型,會將其類型轉換成數字類型.
比較運算符兩側如果都是字元串類型,比較的是最高位的asc碼,如果最高位相等,繼續取第二位比較.

b. 等性運算符

等性運算符:執行類型轉換的規則如下:

如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 為 1。 
如果一個運算數是字元串,另一個是數字,在檢查相等性之前,要嘗試把字元串轉換成數字。 
如果一個運算數是對象,另一個是字元串,在檢查相等性之前,要嘗試把對象轉換成字元串。 
如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字。 
在比較時,該運算符還遵守下列規則:

值 null 和 undefined 相等。 
在檢查相等性時,不能把 null 和 undefined 轉換成其他值。 
如果某個運算數是 NaN,等號將返回 false,非等號將返回 true。 
如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數指向同一對象,那麼等號返回 true,否則兩個運算數不等。

3. 邏輯運算符

邏輯運算符用於測定變數或值之間的邏輯。給定 x=6 以及 y=3,下表解釋了邏輯運算符:

註意點:

&&若前後都為true,則返回後者的值;

||若前後都為true,則返回前者。

4. 賦值運算符

賦值運算符用於給 JavaScript 變數賦值。給定 x=10 y=5,下麵的表格解釋了賦值運算符:

JavaScript運算符學習腦圖

 

 參考資料:

1. http://www.w3cschool.cn/javascript/js-operators.html

2. http://www.cnblogs.com/yuanchenqi/articles/6893904.html

 


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

-Advertisement-
Play Games
更多相關文章
  • 一些事情久久不能釋懷,於是最近學習了下最短路的演算法,希望我能變得輕鬆些。 dijkstra是一種單源最短路演算法。在沒有負權值的圖上,vi..vj..vk是vi到vk最短路的話,一定要走vi到vj的最短路。所以每次取出到起點距離最小的點,從該點出發更新鄰接的點的距離,如果更新成功則把新點加入prior ...
  • 也許很多朋友在學習NIO的時候都會感覺有點吃力,對裡面的很多概念都感覺不是那麼明朗。在進入Java NIO編程之前,我們今天先來討論一些比較基礎的知識:I/O模型。下麵本文先從同步和非同步的概念 說起,然後接著闡述了阻塞和非阻塞的區別,接著介紹了阻塞IO和非阻塞IO的區別,然後介紹了同步IO和非同步IO... ...
  • 在實際的應用場景中,兩個實體之間不只是簡單的一對一關係,還會出現多對多關係,同時還有可能會出現多對多關係還附帶有其他欄位的情況。本文通過幾個例子,對錶間多對多關係的實體類代碼表示方法進行描述。這種設計方法,並不只是在使用 ORM 框架時需要,事實上,它是 POCO 及簡單 Java 類(POJO)的... ...
  • 圓角邊框以及陰影製作卡片式圖片 圓角邊框 border-radius 卡片使用陰影 box-shadow 利用陰影給圖片底部創造一個長方形 內部的元素會直接覆蓋整個陰影 HTML 部分 CSS 部分 圖片展示 此文到此結束 此文參考鏈接 http://www.w3school.com.cn/cssr ...
  • Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 re ...
  • 前文提要:【js實例】js中的5種基本數據類型和9種操作符 Array類型的9個數組方法 Array中有9個數組方法: 1.檢測數組 2.轉換方法 3.棧方法 4.隊列方法 5.沖排序方法6.操作方法 7.位置方法 8.迭代方法 9.歸併方法 在實例中介紹,實例如下 Date類型的41個日期方法 D ...
  • 做為css佈局的又一種新方式,Flex擁有極強的使用效果,相比原來的float,position對元素樣式的操作更加簡潔,本文是我的一點學習經驗和心得吧,如有錯誤以及不足之處,請多多指點。 好進入正題吧,首先借用阮一峰大神的一副圖片: 再來說說flex的幾個屬性吧: 一、容器屬性 1.flex-di ...
  • 1.Generator函數其實是一個封裝了多個內部狀態的狀態機,執行它會返回一個遍歷器對象,然後可以依次遍歷Generator中的每一個狀態,也就是分段執行,yield是暫停執行的標記,next恢復執行。 2.yield: - 一個函數裡面,return只能執行一遍,yield可以執行多次; - G ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...