JavaScript 運(yùn)算符
JavaScript?運(yùn)算子
運(yùn)算子 = 用來賦值。
運(yùn)算子 + 用於加值。
運(yùn)算子 = 用來為 JavaScript 變數(shù)賦值。
算術(shù)運(yùn)算子 + 用來把值加起來。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>點(diǎn)擊按鈕計(jì)算 x 的值.</p> <p>y=3,z=7</p> <p>x=y+z</p> <button onclick="myFunction()">點(diǎn)擊這里</button> <p id="demo"></p> <script> function myFunction() { y=3; z=7; x=y+z; document.getElementById("demo").innerHTML=x; } </script> </body> </html>
JavaScript 算術(shù)運(yùn)算子
#注意事項(xiàng):
算術(shù)運(yùn)算子
?除了加號(+)之外,如果運(yùn)算元不是Number型,會自動先呼叫Number()再轉(zhuǎn)換為Number型別再計(jì)算。 ?除號(/)和取模(%)不會區(qū)分整數(shù)和浮點(diǎn)數(shù),都會自動轉(zhuǎn)換為浮點(diǎn)數(shù),例如 9 / 2 = 4.5 而不是4,5.3 % 3 = 2.3 而不是2。 ?任意運(yùn)算,只要運(yùn)算元含NaN,結(jié)果就是NaN。但並不是結(jié)果為NaN就一定有一個(gè)操作數(shù)為NaN,例如0/0也回傳NaN。
?字串運(yùn)算子
字串連接符號(+)相當(dāng)於concat()函數(shù),會將運(yùn)算資料轉(zhuǎn)換為字串,再連接。在字串和數(shù)值型進(jìn)行+號運(yùn)算時(shí),會將數(shù)值類型轉(zhuǎn)為字串。
布林運(yùn)算子
?&&邏輯與常被應(yīng)用判斷一個(gè)變數(shù)或?qū)傩允欠裼卸x,例如:
if(object && object.name && object.name = 'name'){ ? ?//這裡會先判斷object存在,不存在的話就不會解析object.name從而阻止錯(cuò)誤的發(fā)生,同樣,也只有object.name存在,才會去比較這個(gè)值。 }
? ||邏輯或常被應(yīng)用提供預(yù)設(shè)值的情況,和?問號操作符類似。例如
function Fn(obj){
obj = obj || {};//這裡如果呼叫Fn未傳入obj,則會自動給obj賦值為undefined,然後因?yàn)閡ndefined的對應(yīng)Boolean值為false ,//所以會將一個(gè)空物件{}賦值給obj,如果呼叫傳入了obj,則因?yàn)槿我馕锛腂oolean值為true,//所以就不會取後面的{},從而達(dá)到給obj一個(gè)默認(rèn)值{}的效果。 }
一元運(yùn)算子
前置自增(減)會先自增(減)再參與其它運(yùn)算,後置先參與其它運(yùn)算再自增(減)。
對於不是Number類型的值進(jìn)行自增自減時(shí)會先將其隱式轉(zhuǎn)換為Number類型,然後再自增(減)。
關(guān)係比較運(yùn)算子
比較雙方都為字串時(shí),則會從前往後逐個(gè)比較字元編碼值,只要有較大者就終止比較,不會往後進(jìn)行。 ?比較雙方有Number類型,則會將非Number類型資料轉(zhuǎn)為Number類型值再比較。
運(yùn)算子是物件時(shí),呼叫valueOf()(如果沒有,就呼叫toString()),再將結(jié)果進(jìn)行比較。 ?任何數(shù)和NaN比較都會傳回false.
?物件運(yùn)算子
?透過[]可以存取名稱為變數(shù)或含有特殊字元的屬性,名稱為普通確定值時(shí)用.點(diǎn)號存取物件屬性。
new 呼叫建構(gòu)函式建立一個(gè)對象,在建構(gòu)函式內(nèi)部的this被指向這個(gè)新建立的對象。
delete,刪除變數(shù)或?qū)傩?,(變?shù)可以看成是全域物件或執(zhí)行環(huán)境的屬性)
其它操作符
##typeof是一個(gè)運(yùn)算符,而不是函數(shù),傳回字串值,(有些會根據(jù)瀏覽器極度版本不同而略有不同)typeof一般用來判斷簡單資料類型,如果是物件類型,因?yàn)榇蟛糠只貍鞯亩际莖bject,實(shí)際上一般不會使用;而instanceof的判斷也需要滿足同一個(gè)上下文的條件,否則也會出錯(cuò),常用方式:使用一元加號+直接隱式轉(zhuǎn)換為Number型別。? 例如:console.info(+true);? //1,一元運(yùn)算符,轉(zhuǎn)換為數(shù)值1使用加空字串可直接隱式轉(zhuǎn)換為String類型。???? 例如:console.info(''+true);? //true,隱含轉(zhuǎn)換為字串'true'#使用雙重邏輯非!!隱含轉(zhuǎn)換為Boolean類型。例如:var a='a';?? console.info(!!a);?? //true? 兩次取反,將其隱式轉(zhuǎn)換為boolean型別使用邏輯與&&來偵測物件或其屬性是否存在並進(jìn)行後續(xù)操作。?? 例如:object && object.name && object.name = 'name';使用邏輯或||來提供函數(shù)參數(shù)預(yù)設(shè)值,也常用?問號條件運(yùn)算子提供預(yù)設(shè)值。? 例如:? obj = obj || {};使用花括號{}來定義物件字面量,JSON資料格式和程式碼區(qū)塊。?? 例如: var obj = {};使用中括號[]定義陣列字面量,JSON資料格式,存取數(shù)組,存取名稱是變數(shù)或特殊字元的屬性。? 例如: obj[this.index]按位運(yùn)算可應(yīng)用一些場所:如不使用中間變數(shù)直接交換兩個(gè)數(shù)值、判斷奇數(shù)和偶數(shù)、MD5加密等等。################################################################################兩個(gè)數(shù)字相加,傳回?cái)?shù)字相加的和,如果數(shù)字與字串相加,傳回字串,如下實(shí)例:###
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>點(diǎn)擊按鈕創(chuàng)建及增加字符串變量。</p> <button onclick="myFunction()">點(diǎn)擊這里</button> <p id="demo"></p> <script> function myFunction() { var x=5+5; var y="5"+5; var z="Hello"+5; var demoP=document.getElementById("demo"); demoP.innerHTML=x + "<br>" + y + "<br>" + z; } </script> </body> </html>###規(guī)則:如果把數(shù)字與字串相加,結(jié)果將成為字符串! ###