欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中極易出錯的操作符運算總結(jié)

 更新時間:2021年08月10日 12:57:38   作者:Charonmomo  
這篇文章主要給大家介紹了關(guān)于JavaScript中極易出錯的操作符運算的相關(guān)資料,包括了算術(shù)運算符、比較運算符、邏輯運算符、賦值運算符、一元運算符以及運算優(yōu)先級等問題,需要的朋友可以參考下

算術(shù)運算符

+ - * / % ()

非正常情況1: 有特殊值字面量參與的運算

  • NaN參與的運算:得到的結(jié)果都是NaN
  • Infinity參與的運算,視情況而定, 比如:
5/Infinity=0
5%Infinity=5
Infinity%5=NaN
Infinity+5=Infinity
Infinity / Infinity = NaN
Infinity - Infinity = NAN
Infinity % Infinity = NAN

工作中并不會使用特殊值運算,沒有實際應(yīng)用的意義,但是要了解,以防面試遇到

非正常情況2: 其他類型的數(shù)據(jù)參與數(shù)學(xué)運算。

有字符串參與的 + 運算(包括只有符號一邊有字符的情況):+ 號變?yōu)檫B字符將前后連接成整體字符串。

例如:

        var a = 3 - "36" % 5 + "2" - 2
        console.log(a)
        var b = "36" % 5
        console.log(b)
        var c = 3 - "36" % 5 + "2"
        console.log(c)

輸出:

20
1
22

隱式轉(zhuǎn)換:除了字符串參與的 + 運算,其他情況下,所有其他數(shù)據(jù)類型參與數(shù)學(xué)運算時,計算機暗中將其他數(shù)據(jù)類型先自動轉(zhuǎn)換成數(shù)字類型,再參與運算,這個過程中不需要使用parseInt()、Number() 等方法,過程是暗中進(jìn)行,這就是一個隱式轉(zhuǎn)換的過程。

隱式轉(zhuǎn)換

其他的數(shù)據(jù)類型會隱式轉(zhuǎn)換為數(shù)字類型:

  • 對應(yīng)數(shù)字:純數(shù)字字符串會轉(zhuǎn)為對應(yīng)的數(shù)字”123”→123
  • 轉(zhuǎn)換為1: true
  • 轉(zhuǎn)換為0:false、null、 “”空字符串、空白字符串
  • 轉(zhuǎn)換為NaN:undefined、非空非純數(shù)字字符串

比較運算符

也叫作關(guān)系運算符。一個 比較運算符 comparison operator 比較它的操作數(shù)并返回一個布爾類型值。運算結(jié)果要么是true,要么是false。

>  大于

<  小于

>= 大于等于

<= 小于等于

== 相等,只判斷值大小是否相等,不判斷數(shù)據(jù)類型

!= 不等,與相等完全相反

===全等,不光判斷值相等,還要判斷數(shù)據(jù)類型相等

!==不全等,與全等于完全相反

非正常情況1: 特殊值參與比較運算

  • NaN參與:不等于和不全等于結(jié)果是 true,其他的都得到 false
  • Infinity參與的運算,視情況而定, 比如:
Infinity == Infinity ->True
Infinity === Infinity ->True
Infinity > Infinity ->False
Infinity >= Infinity ->True

非正常情況2: 其他數(shù)據(jù)類型參與比較運算(排除字符串與字符串的比較

其他數(shù)據(jù)類型也會隱式轉(zhuǎn)換為數(shù)字參與比較。

“123”→123 true→1 false→0 null→0 undefined→NaN “”→0 “abc”→NaN

null 的判斷比較特殊:null 與 0 判斷時,相等判斷為 false,>= 和 <= 判斷為 true

null == undefined -> True

非正常情況3: 字符串與字符串比較

不會發(fā)生隱式轉(zhuǎn)換為數(shù)字,而是比較兩個字符串的 Unicode 編碼順序

字符編碼順序:從前往后 0-9,A-Z,a-z,前面的小于后面的

比較時,不關(guān)心兩個字符串的長度,從第一個字符開始比較,依次往后順延比較,直到比較出大小,就不再往后比較

邏輯運算符

邏輯運算符常用于布爾類型值之間; 當(dāng)操作數(shù)都是布爾值時,返回值也是布爾值

&&      邏輯與運算符且
||      邏輯或運算符
!       邏輯非運算符

非正常情況

  • 除了布爾類型的值之外,其他數(shù)據(jù)類型的值也可以參與邏輯運算。運算過程中需要將操作數(shù)隱式轉(zhuǎn)換為布爾類型的值,參與判斷計算,最終運算結(jié)果還是原來的某個位置的數(shù)據(jù).
  • 并不是所有邏輯運算返回結(jié)果都是布爾值,其他數(shù)據(jù)參與得到的就是數(shù)據(jù)本身

隱式轉(zhuǎn)換為布爾值的規(guī)律

  • 轉(zhuǎn)為false:NaN、0、 “”空字符串、null、undefined
  • 轉(zhuǎn)為true:非0 非NaN數(shù)字、非空字符串

當(dāng)它們用于非布爾值的時候,返回值就可能是非布爾值。其實這種運算非常簡單:

  • (邏輯與 a && b ) 如果a能被轉(zhuǎn)換為false,那么返回a;否則,返回b
  • (邏輯或 a || b ) 如果a能被轉(zhuǎn)換為true,那么返回a;否則,返回b

邏輯運算符運算順序

綜合運算順序:非、與、或

賦值運算符

=   等于
+=  加等于
-=  減等于
*=  乘等于
/=  除等于
%=  取余等于
++  遞加
--  遞減

一元運算符

++ -- !

++ 或 -- 符號可以寫在變量前和變量后面,位置不同可能導(dǎo)致程序運行結(jié)果不同

以 ++ 為例:

  • a++: ++ 符號在變量之后,a++ 在參與程序過程中使用的原始沒有加 1 的值,使用完后第二次用 a 變量時,a 用的就是加 1 后的新值。先參與,后自加.
  • ++a:++ 符號在變量之前,++a 在參與過程中整體就使用 a 加 1 之后的新值,使用完后第二次用 a 變量時,a 用的也是加 1 的新值。先自加,后參與

例1

var a = 3; 
var b = a++; 
var c = ++a;
console.log(a,b,c)

輸出:

5 3 5

例2

輸出:

運算優(yōu)先級

優(yōu)先級從高到底:

1. () 優(yōu)先級最高

2. 一元運算符 ++ -- !

3. 算數(shù)運算符 先* / % 后 + -

4. 關(guān)系運算符 > >= < <=

5. 相等運算符 == != === !==

6. 邏輯運算符 先&& 后||

7. 賦值運算符

var a = 4; var num = 1 * (2 + 3) && a++ || 5 > 6 && 7 < 8 || !9; 
console.log(num)

輸出:

4

總結(jié)

到此這篇關(guān)于JavaScript中極易出錯的操作符運算總結(jié)的文章就介紹到這了,更多相關(guān)JavaScript操作符運算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js分頁顯示div的內(nèi)容

    js分頁顯示div的內(nèi)容

    對于div內(nèi)容過高的情況,我們可以用js控制div分頁
    2008-07-07
  • 對layui中的onevent 和event的使用詳解

    對layui中的onevent 和event的使用詳解

    今天小編就為大家分享一篇對layui中的onevent 和event的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JS實現(xiàn)用戶注冊時獲取短信驗證碼和倒計時功能

    JS實現(xiàn)用戶注冊時獲取短信驗證碼和倒計時功能

    在用戶注冊時,通常需要短信驗證碼,而且為了交互效果,也需要增加倒計時。該如何實現(xiàn)獲取驗證碼倒計時功能呢?下面小編給大家分享JS實現(xiàn)用戶注冊時獲取短信驗證碼和倒計時的代碼,一起看看吧
    2016-10-10
  • uni-app使用uniCloud實現(xiàn)圖形驗證碼(uni-captcha)詳細(xì)過程

    uni-app使用uniCloud實現(xiàn)圖形驗證碼(uni-captcha)詳細(xì)過程

    這篇文章主要給大家介紹了關(guān)于uni-app使用uniCloud實現(xiàn)圖形驗證碼(uni-captcha)的相關(guān)資料,實際開發(fā)工作中在登陸的時候經(jīng)常需要圖形驗證碼,需要的朋友可以參考下
    2023-07-07
  • webpack是如何實現(xiàn)模塊化加載的方法

    webpack是如何實現(xiàn)模塊化加載的方法

    這篇文章主要介紹了webpack是如何實現(xiàn)模塊化加載的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • js統(tǒng)計頁面上每個標(biāo)簽的數(shù)量實例代碼

    js統(tǒng)計頁面上每個標(biāo)簽的數(shù)量實例代碼

    這篇文章通過實例代碼給大家講解了通過js統(tǒng)計頁面上每個標(biāo)簽的數(shù)量,代碼很簡單,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • 前端使用正則表達(dá)式進(jìn)行校驗的方法總結(jié)大全

    前端使用正則表達(dá)式進(jìn)行校驗的方法總結(jié)大全

    很多時候我們需要校驗用戶輸入的值是否正確,如果格式固定的,直接把錯誤的值傳給后端顯然是不合理的,所以我們要直接在前端進(jìn)行正則校驗,這篇文章主要給大家介紹了關(guān)于前端使用正則表達(dá)式進(jìn)行校驗的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • uniapp實現(xiàn)橫向滾動選擇日期

    uniapp實現(xiàn)橫向滾動選擇日期

    這篇文章主要為大家詳細(xì)介紹了uniapp實現(xiàn)橫向滾動選擇日期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • IE的有條件注釋判定IE版本詳解(附實例代碼)

    IE的有條件注釋判定IE版本詳解(附實例代碼)

    IE的有條件注釋是一種專有的(因此是非標(biāo)準(zhǔn)的)、對常規(guī)(X)HTML注釋的Miscrosoft擴(kuò)展。顧名思義,有條件注釋使你能夠根據(jù)條件(比如瀏覽器版本)顯示代碼塊(不一定就是css,也可以是html代碼,甚至是JavaScript代碼)。
    2012-01-01
  • JS使用Date對象實時顯示當(dāng)前系統(tǒng)時間簡單示例

    JS使用Date對象實時顯示當(dāng)前系統(tǒng)時間簡單示例

    這篇文章主要介紹了JS使用Date對象實時顯示當(dāng)前系統(tǒng)時間,涉及javascript基于定時器動態(tài)操作Date對象相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08

最新評論