1. 程式人生 > >js基礎概念-操作符

js基礎概念-操作符

有效 瀏覽器 轉換 二進制補碼 是把 字符串 size 右移 補碼

操作符是操作數據值的符號,也叫做運算符。

按照操作個數分為:一元運算符,二元運算符,三元運算符。

按功能分為:位操作符,布爾操作符,乘性操作符,加性操作符,關系操作符,關系操作符,相等操作符,條件操作符,賦值操作符,逗號操作符。

一元操作符,只能操作一個值的操作符。

1.遞增遞減操作符,執行前置遞增遞減的操作符時都是在語句請求前執行的,在計算機科學領域上講,這種情況通常叫做副效應。

規則:

字符串是有限數字字符轉化成數字值在加減1如果不包含有效數字,轉換成NaN

浮點型正常轉換加減1

布爾型false將轉換成0加減1true相反

對象,先使用valueof()方法,取得一個可操作的值,如果是NaN在使用toString()方法,對象變量變成數值變量。

2,一元加或減操作符

加操作符,放在數值的前面,對大小沒有影響。如果是非數值類型,按照上面規則轉化。

減操作符,放在數值的後面,數值大小取反。如其他類型,按照規則進行轉化。

位操作符

是最基本層次上的,按內存表示數值的位來操作數值。

都是用32位進行操作的,整數以純二進制格式存儲,31位中的每一位都表示2的冪次方,第一是2的0次冪,第二位2的1次冪,以此類推,沒用到位用0補充。負數,也是二進制存儲,但使用補碼。補碼分三步,1,求這個數值絕對值的二進制碼,例如(求-18的二進制補碼,先求18的二進制碼)。2,再求二進制反碼,就是把所有的0替換成1,所有的1換成0。3,得到的二進制反碼在加1。

例如-18的二進制碼:

0000 0000 0000 0000 0000 0000 0001 0010

然後求二進制反碼,也就是0和1互換

1111 1111 1111 1111 1111 1111 1110 1101

最後在二進制反碼加1

1111 1111 1111 1111 1111 1111 1111 1110

但是ECMAscript不會讓我看見這些,我們只需要理解這個轉換過程就好,在以二進制字符串形式輸出負數時,我們看到的還是負數絕對值二進制碼前面加一個負號。

1,按位非(NOT)

按位非以一個波浪線(~)表示,就是數值的反碼。例如:

var num1 =25; //二進制0000 0000 0000 0000 0000 0000 0000 0001 1001

var num2 =~num; //二進制 1111 1111 1111 1111 1111 1111 1111 1111 1110 0110

alert num2; //-26

也就是操作值的負值減一。

2,按位或(AND)

按位與由一個(&)表示。將兩個數值的每一位對齊,如果兩個數值都為1,結果為1,其它都為0。

3,按位或(OR)

按位或由一個豎線(丨)表示。也是將兩個數值每一位對齊,只有有一個為1,結果就為1,兩個都是0的情況下才返回0。

4,按位異或(XOR)

由(^)表示,只有一個1才返回1。

5,左移

由(<<)表示,會將所有數值的所有位向左移動指定的位數。以0補充移動的位數。

6,有符號的右移

由(>>)表示,會將所有數值的所有位向右移動指定的位數。以隱藏的符號位填充空白的位數。

7,無符號右移

由(>>>)表示,和有符號右移一樣,但是以0填充空位,而且無符號二進制碼當成正數二進制碼,負數以其絕對值的二進制碼補碼形式表示,因此導致無符號右移後結果非常大。

布爾操作符

有3個:非(NOT),與(AND),或(OR)。

1,邏輯非(!)表示,將它操作數轉換成布爾值,然後取反。

{對象返回false;空字符串返回true;非空返回false;操作數的數值位0返回true;任何非0返回false;null返回true;NaN返回true;Undefined返回true。}

也就是將一個值轉換成布爾值,然後對其取反。

2,邏輯與(&&)

屬於短路操作,即如果有一個操作數決定結果,就不會對第二個操作數求值。如果第一個位false,無論第二個為什麽值,結果都不可能為true。

3,邏輯或(||)

只有有一個滿足條件為true ,就返回為true那個為操作數。

乘性操作符

定義了3個乘性操作符:乘法,除法和求模。

1,乘法(*)表示計算連個數乘積。和數學中乘法一樣,要是超出範圍,返回Infinity或-Infinity

2,除法(/)第二個數除以第一個數。

3,求模(余數)由(%)表示。

加性操作符

1,加法(+)都是數值正常加法運算,如果:都是字符串,將兩拼接起來。如一個是數值,一個是字符串,將數值轉換成字符串,然後字符串拼接。如果有一個操作數是對象,數值或布爾值,調用toString()方法。對於underfined和null調用String()函數取得相應的字符串。

*可以運用括號告訴瀏覽器那個先執行。

2,減法(-)和加法類似。

關系運算符

大於(>)小於(<)大於等於(>=)小於等於(<=)

比較規則如下:

如都是數值,執行數值比較。

如兩個操作符都是字符串時,則比較兩個字符串對應的字符編碼值。

如一個是數值,則另一個操作數轉換成一個數值,然後執行數值比較。

如一個操作數是對象,則調用這個對象的valueOf()方法,如果對象沒有這個方法用toString()方法,在根據上面規則比較。

如一個是布爾值,將其轉換成數值在比較。

任何與NaN進行比較都是false。

相等操作符

1,相等(==)如果相等返回true。不相等(!=)成立返回true,轉換規則同上,不同的是null和underfine相等。

2,全等(===),不全等(!==)在不轉換類型的情況下比較。

條件操作符

說白了就是if()else{}語句,也叫三元操作符。

例如:var max =(num1 > num2) ? num1 :num2;

就是說如果前面為true取num1賦給max,false取num2賦給max。

賦值操作符

由(=)表示,也就是二元操作符,就是把右側的值賦給左邊

逗號操作符

在一條語句中執行多個操作,

用於聲明多個變量。例如:var num1 =1,num2=2,num3=3;

用於賦值,只會返回最後一項。例如:var num =(5,1,4,8,0);//num的值為0。

js基礎概念-操作符