位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 賦值運(yùn)算

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-24

■知識(shí)點(diǎn)

賦值運(yùn)算有以下兩種形式。

    簡單的賦值運(yùn)算(=):把等號右側(cè)操作數(shù)的值,直接復(fù)制給左側(cè)的操作數(shù),因此左側(cè)操作數(shù)的值會(huì)發(fā)生變化。

    附加操作的賦值運(yùn)算:賦值之前先對右側(cè)操作數(shù)執(zhí)行某種操作,然后把運(yùn)算結(jié)果再復(fù)制給左側(cè)操作數(shù),具體說明如表所示。

賦值運(yùn)算符

等效于

+=

加法運(yùn)算或連接操作并賦值

a+=b

a = a + b

          -=

減法運(yùn)算并賦值

a -=b

a = a - b

*=

乘法運(yùn)算并賦值

a *=b

a = a *b

/=

除法運(yùn)算并賦值

a/=b

a = a/b

%=

取模運(yùn)算并賦值

a%=b

a = a%b

?=

左移位運(yùn)算并賦值

a<<=b

a = a<<b

?=

右移位運(yùn)算并賦值

a>>=b

a = a>>b

?>=

無符號右移位運(yùn)算并賦值

a>>>= b

a = a>>>b

&=

位與運(yùn)算并賦值

a&=b

a = a&b

丨=

位或運(yùn)算并賦值

a |=b

a = a | b

^=

位異或運(yùn)算并賦值

a^=b

a = a^b


■實(shí)例設(shè)計(jì)

使用賦值運(yùn)算符設(shè)計(jì)復(fù)雜的連續(xù)賦值表達(dá)式。

var a = b = c = d = e = f = 100; //連續(xù)賦值

//在條件語句的小括號內(nèi)進(jìn)行連續(xù)賦值

for(var a = b = 1; a < 5; a ++ ){ console.log(a + "" + b );  }

    賦值運(yùn)算符的結(jié)合性是從右向左,所以最右側(cè)的賦值運(yùn)算先執(zhí)行,然后再向左賦值,以此類推,所以連續(xù)賦值運(yùn)算不會(huì)引發(fā)異常。

    在下面的表達(dá)式中,邏輯與左側(cè)的操作數(shù)是一個(gè)賦值表達(dá)式,右側(cè)的操作數(shù)也是一個(gè)賦值表達(dá)式,但是左側(cè)賦的值是一個(gè)簡單值,右側(cè)是把一個(gè)函數(shù)賦值給變量b。

    在邏輯與運(yùn)算中,左側(cè)的賦值并沒有真正地復(fù)制給變量a,當(dāng)邏輯與運(yùn)算執(zhí)行右側(cè)的表達(dá)式時(shí),該表達(dá)式是把一個(gè)函數(shù)賦值給變量b,然后利用小括號運(yùn)算符調(diào)用這個(gè)函數(shù),返回變量a的值,結(jié)果并沒 有返回變量a的值為6,而是undefined。

var a;                                      //定義變量a 

console.log(a = 6 && (b = function(){       //邏輯與運(yùn)算表達(dá)式

        return a;                           //返回變量a的值

    })()

);                                          //結(jié)果返回undefined

    由于賦值運(yùn)算作為表達(dá)式使用具有副作用,使用時(shí)要慎重,確保不會(huì)引發(fā)風(fēng)險(xiǎn)。對于上面的表達(dá)式,更安全的寫法如下。

var a = 6;                //定義并初始化變量a

b = function 0 {               //定義函數(shù)對象b 

    return a;

}

console, log (a && b());       //邏輯與運(yùn)算,根據(jù)a決定是否調(diào)用函數(shù)b


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部