JavaScript 運算符

JavaScript 運算子

運算子 = 用來賦值。

運算子 + 用於加值。

運算子 = 用來為 JavaScript 變數賦值。

算術運算子 + 用來把值加起來。

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8">  
</head>
<body>
<p>点击按钮计算 x 的值.</p>
<p>y=3,z=7</p>
<p>x=y+z</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction()
{
y=3;
z=7;
x=y+z;
document.getElementById("demo").innerHTML=x;
}
</script>
</body>
</html>

JavaScript 算術運算子

QQ图片20161025103054.png

#注意事項:

算術運算子

 除了加號(+)之外,如果運算元不是Number型,會自動先呼叫Number()再轉換為Number型別再計算。  除號(/)和取模(%)不會區分整數和浮點數,都會自動轉換為浮點數,例如 9 / 2 = 4.5 而不是4,5.3 % 3 = 2.3 而不是2。  任意運算,只要運算元含NaN,結果就是NaN。但並不是結果為NaN就一定有一個操作數為NaN,例如0/0也回傳NaN。

 字串運算子

字串連接符號(+)相當於concat()函數,會將運算資料轉換為字串,再連接。在字串和數值型進行+號運算時,會將數值類型轉為字串。

布林運算子

 &&邏輯與常被應用判斷一個變數或屬性是否有定義,例如:

if(object && object.name && object.name = 'name'){    //這裡會先判斷object存在,不存在的話就不會解析object.name從而阻止錯誤的發生,同樣,也只有object.name存在,才會去比較這個值。 }
  ||邏輯或常被應用提供預設值的情況,和?問號操作符類似。例如
function Fn(obj){
  obj = obj || {};//這裡如果呼叫Fn未傳入obj,則會自動給obj賦值為undefined,然後因為undefined的對應Boolean值為false ,//所以會將一個空物件{}賦值給obj,如果呼叫傳入了obj,則因為任意物件的Boolean值為true,//所以就不會取後面的{},從而達到給obj一個默認值{}的效果。 }

一元運算子

前置自增(減)會先自增(減)再參與其它運算,後置先參與其它運算再自增(減)。

對於不是Number類型的值進行自增自減時會先將其隱式轉換為Number類型,然後再自增(減)。

關係比較運算子

比較雙方都為字串時,則會從前往後逐個比較字元編碼值,只要有較大者就終止比較,不會往後進行。  比較雙方有Number類型,則會將非Number類型資料轉為Number類型值再比較。

運算子是物件時,呼叫valueOf()(如果沒有,就呼叫toString()),再將結果進行比較。  任何數和NaN比較都會傳回false.

 物件運算子

 透過[]可以存取名稱為變數或含有特殊字元的屬性,名稱為普通確定值時用.點號存取物件屬性。

new 呼叫建構函式建立一個對象,在建構函式內部的this被指向這個新建立的對象。

delete,刪除變數或屬性,(變數可以看成是全域物件或執行環境的屬性)

其它操作符

##typeof是一個運算符,而不是函數,傳回字串值,(有些會根據瀏覽器極度版本不同而略有不同)

typeof一般用來判斷簡單資料類型,如果是物件類型,因為大部分回傳的都是object,實際上一般不會使用;

而instanceof的判斷也需要滿足同一個上下文的條件,否則也會出錯,

常用方式:

使用一元加號+直接隱式轉換為Number型別。  例如:console.info(+true);  //1,一元運算符,轉換為數值1

使用加空字串可直接隱式轉換為String類型。     例如:console.info(''+true);  //true,隱含轉換為字串'true'

#使用雙重邏輯非!!隱含轉換為Boolean類型。例如:var a='a';   console.info(!!a);   //true  兩次取反,將其隱式轉換為boolean型別

使用邏輯與&&來偵測物件或其屬性是否存在並進行後續操作。   例如:object && object.name && object.name = 'name';

使用邏輯或||來提供函數參數預設值,也常用?問號條件運算子提供預設值。  例如:  obj = obj || {};

使用花括號{}來定義物件字面量,JSON資料格式和程式碼區塊。   例如: var obj = {};

使用中括號[]定義陣列字面量,JSON資料格式,存取數組,存取名稱是變數或特殊字元的屬性。  例如: obj[this.index]

按位運算可應用一些場所:如不使用中間變數直接交換兩個數值、判斷奇數和偶數、MD5加密等等。

QQ图片20161025103200.png

################################################################################兩個數字相加,傳回數字相加的和,如果數字與字串相加,傳回字串,如下實例:###
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8">  
</head>
<body>
<p>点击按钮创建及增加字符串变量。</p>
<button onclick="myFunction()">点击这里</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>
###規則:如果把數字與字串相加,結果將成為字符串! ###
繼續學習
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>点击按钮计算 x 的值.</p> <p>y=3,z=7</p> <p>x=y+z</p> <button onclick="myFunction()">点击这里</button> <p id="demo"></p> <script> function myFunction() { y=3; z=7; x=y+z; document.getElementById("demo").innerHTML=x; } </script> </body> </html>