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
  • 示例項目結構 在 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# ...