首頁  >  文章  >  web前端  >  總結介紹JavaScript中的八類運算符

總結介紹JavaScript中的八類運算符

伊谢尔伦
伊谢尔伦原創
2017-07-19 09:19:26965瀏覽

一、一元運算子 

1、delete 運算子:刪除先前定義的物件屬性或方法的參考。例如:

var o=new Object; 
o.name="superman"; 
alert(o.name); //输出 "superman" 
delete o.name; 
alert(o.name); //输出 "undefined"

刪除了name屬性,將其設定為undefined(即建立的未初始化的變數的值)。 delete不能刪除開發者未定義(即ECMAScript定義)的屬性和方法。
例如,下面的程式碼將發生錯誤:delete o.toString(); 

2、void 運算子: 對任何值都回傳undefined。此運算符通常用於避免輸出不應該輸出的值。
例如:在HTML頁面中675eda870be2316d492275bfd24cd4c7Click Me5db79b134e9f6b82c0b36e0489ee08ed
點擊該鏈接,網頁中的鏈接消失,顯示"[object]" (IE中,火狐中顯示"[object Window]",Google中還是該連結)。因為window.open()方法傳回了對新開啟的視窗的參考。然後該物件被轉換成要顯示的字串。要避免這種結果,可以用void 運算子呼叫window.open() 函數:

<a href="javascript:void(window.open(&#39;about:blank&#39;))">Click Me</a>

這會使window.open()呼叫傳回undefined,它不是有效值,不會顯示在瀏覽器視窗中。 

3、前增量/前減量運算子:與C中的用法相同。運算都發生在計算表達式之前。如:++i; --i 。 

4、後增量/後減量運算子:後綴式運算子是在計算過包含它們的表達式後才進行增量或減量運算子。如:i++; i-- 。

5、一元加法和一元減法
一元加法本質上對數字沒有任何影響: var iNum=25; iNum=+iNum; alert(iNum); //輸出25
一元加法當運算子對字串進行操作時,它計算字串的方式與parseInt() 相似,主要的不同是對以"0x"開頭的字串(表示十六進位數字),一元運算子才能將它轉換成十進制的值。因此,用一元加法轉換"010",得到的總是10,而"0xB"將轉換成11。
var sNum="25"; alert(typeof sNum); //輸出"string"
var iNum=+sNum; alert(typeof iNum); //輸出"number"
一元減法就是對數值求負,與一元加法運算子相似,一元減法運算子也會將字串轉換成近似的數字,此外還會對該值求負。
var sNum = "25"; alert(typeof sNum); //輸出"string"
var iNum = -sNum; alert(iNum); //輸出"-25"
alert(typeof iNum ); //輸出"number" 


二、位元運算子:與二進位相關的一系列運算子
位元運算子NOT由否定編號(~)表示。
位元運算子AND由和號(&)表示。
位元運算子OR由符號(|)表示。
位元運算子XOR由符號(^)表示。
左移運算由兩個小於號表示(6a82f9d3a42421f7d054430c4301f7ae>)表示。
無符號右移由三個大於號(>>>)表示。 


三、Boolean運算子
Boolean運算子有三種,即NOT、AND 和 OR。
1、邏輯NOT,用感嘆號(!)表示。此運算符通常用於控制循環。與邏輯OR和邏輯AND運算子不同的是,邏輯NOT運算子回傳的一定是Boolean值。邏輯NOT運算子的行為如下:
如果運算數是對象,回傳false。
如果運算數是數字0,則回傳true。
如果運算數是0意外的任何數字,回傳false。
如果運算數是null,則回傳true。
如果運算數是NaN,則回傳true。
如果運算數是undefined,發生錯誤。
例: var b = true;
while(!b){ … }
2、邏輯 AND 運算符,以雙和號(&&)表示。結果為 true 時只有一種情況:true && true = true;
邏輯AND運算的運算數可以是任何類型的,不只Boolean值。如果某個運算數不是原始的Boolean型值,邏輯AND運算不一定會傳回Boolean值:
如果一個運算數是對象,另一個是Boolean值,則傳回該物件。
如果兩個運算數都是對象,則傳回第二個物件。
如果某個運算數是null,回傳null。
如果某個運算數是NaN,則回傳NaN。
如果某個運算數是undefined,發生錯誤。
如果第一個運算數是false,那麼無論第二個運算數的值是什麼,結果都不可能為true。
3、邏輯OR運算符,用雙豎線(||)表示。結果為false的情況只有一種:false || false=false; 其他情況均為true。
與邏輯AND運算子相似,如果某個運算數不是Boolean值,邏輯OR運算並不一定傳回Boolean值:
如果一個運算數是對象,另一個是Boolean值,傳回該物件。
如果兩個運算數都是對象,則傳回第一個對象。
如果某個運算數是null,回傳null。
如果某個運算數是NaN,則回傳NaN。
如果某個運算數是undefined,發生錯誤。
邏輯OR也是簡單運算,對於邏輯OR運算子來說,如果第一個運算數值為true,就不再計算第二個運算數。 


四、乘性運算子
1、乘法運算符,用星號(*)表示,用於兩個數字相乘。但在處理特殊值時,ECMAScript中的乘法還有一些特殊行為:
如果運算數都是數字,執行常規的乘法運算,如果結果太大或太小,那么生成的結果就是Infinity或-Infinity 。
如果某個運算數是NaN,結果為NaN。
Infinity 乘以0,結果為NaN。
Infinity 乘以0以外的任何數字,結果為Infinity或-Infinity,由第二個運算數的符號決定。
2、除法運算符,用斜線(/)表示,用第二個數字除第一個數。對於特殊值,特殊行為如下:
如果運算數都是數字,執行常規的觸發運算,如果結果太大或太小,那麼產生的結果是Infinity或-Infinity。
如果某個運算數是NaN,結果為NaN。
0除一個非無窮大的數字,結果為NaN。
Infinity被0以外的任何數字除,結果為Infinity或-Infinity,由第二個運算數的符號決定。
3、取模運算符,用百分號(%)表示。如果運算數都是數字,執行常規算術除法運算,傳回餘數。特殊行為:
如果被除數是 Infinity,或除數是0,結果為NaN。
如果除數是無窮大的數,結果為被除數。
如果被除數為0,結果為0。 


五、加性運算子
1、加法運算子(+),特殊行為:
某個運算數是NaN,結果為NaN。
Infinity 加-Infinity,結果為NaN。
如果某個運算數是字串,那麼採取下列規則:
如果兩個運算數都是字串,把第二個字串連接到第一個字串上。
如果只有一個運算數是字串,把另一個運算數轉換成字串,結果是兩個字串連接成的字串。
2、減法運算子(-),如果兩個運算數都是數字,就會執行算術減法。特殊規則:
如果運算數是NaN,結果為NaN。
某個運算數不是數字,結果為NaN。 


六、关系运算符
关系运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算,比较方式与算术比较运算相同。每个关系运算符都返回一个Boolean值。
对于字符串,第一个字符串中每个字符的代码都会与第二个字符串中对应位置上的字符的代码进行数值比较。
1、大写字母的代码都小于小写字母的代码,所以要得到按照真正的字母顺序比较结果,必须把两个运算数转换成相同的大小写形式,再进行比较。
2、在比较两个字符串形式的数字时,比较的是它们的字符代码。
3、比较一个字符串和数字,ECMAScript都会把字符串转换为数字,然后按照数字顺序比较它们。如果字符串不能转换成数字,那么返回NaN,任何包含NaN的关系运算都要返回false。因此,这样会返回false。 


七、等性运算符 

1、等号(==) 和非等号(!=),为确定两个运算数是否相等,这两个运算符都会进行类型转换。执行类型转换的基本规则如下:
如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。False转换成0,true转换成1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查等性之前,要尝试把对象转换成字符串(调用toString()方法)。
如果一个运算数是对象,另一个是数字,在检查等性之前,要尝试把对象转换成数字。
在进行比较时,该运算符还遵守下列规则:
值null和undefined相等。
在检查相等性时,不能把null和undefined转换成其他值。
如果某个运算数是NaN,等号将返回false,非等号将返回true。即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。
如果两个运算数都是对象,那么比较的是他们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。 

2、全等号和非全等号
等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是他们在检查相等性前,不执行类型转换。
全等号由三个等号(===)表示,只有在无需类型转换运算数就相等的情况下,才返回true。

var sNum="55"; var iNum=55; alert(sNum==iNum); //输出 "true" 
alert(sNum===iNum); //输出 "false"

非全等号由两个感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回true。

var sNum="55"; var iNum=55; alert(sNum != iNum); //输出 "false" 
alert(sNum !== iNum); //输出 "true"


八、其他运算符
1、条件运算符,即三元运算符 : variable = boolean_expression ? true_value : false_value;
2、赋值运算符(=) 复合赋值运算符:+=、-=、*=、/=、%=、c1416f47236dd7b5b9b6ea098534dc8d>=、>>>=
3、逗号运算符 用逗号运算符可以在一条语句中执行多个运算。 如: var iNum1=1,iNum2=2;

以上是總結介紹JavaScript中的八類運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn