5 表示式和操作符

2021-08-29 22:27:47 字數 2715 閱讀 8502

下面的準則要牢記(有的時候覺得這個規則蠻麻煩的)

[1] 如果左右兩邊是同乙個物件的reference,那麼返回true。這種情況都是false:

var now = new date();

var arr1 = [now];

var arr2 = [now];

arr1 === arr2 (false)

[2] 如果左右兩邊是數字,那麼它們的值相等就返回true。可是注意一下,1 === 1.0 (true);如果其中只要有乙個是nan,那麼結果一定是false。

[3] 如果是str,那麼只要內容一樣就是true。可是,這裡所謂的一樣是忽略編碼特徵的,要加入帶編碼的比較,用localecompare。

[4] true === true (true) false === false (true) undefined === undefined (true) null === null (true)

undefined === null (false)

[1] 數字和str的 == 和 === 是一至的,除了下面這種:undefined == null (true)

[2] 如果乙個是str,乙個是數字,就會把str轉成數字,然後再比較

[3] 如果任何乙個是true或者false,會將它們轉成1或者0,然後再比較

[4] object,會先用valueof()再用tostring()去把它們轉成primitive型別的比較。date會直接呼叫tostring()轉成primitive的進行比較

[5] 其他都應該==都是false

var a = 5/2;

undefined

a;2.5

var b = 2.5;

undefined

a == b;

true

a === b;

true

var str1 = "i love u";

undefined

var str2 = "i love " + "u";

undefined

str1 == str2;

true

str1 === str2;

true

var arr1 = [1,2,3];

undefined

var arr2 = [1,2,3];

undefined

arr1 == arr2;

false

arr1 === arr2;

false

var c = 0/0;

undefined

c;nan

c == a;

false

c === a;

false

isnan(c);

true

var now = new date();

undefined

var arr2 = [now];

undefined

var arr3 = [now];

undefined

arr2 === arr3;

false

arr2 == arr3;

false

undefined = undefined;

undefined

undefined == undefined;

true

undefined === undefined;

true

null == null;

true

null === null;

true

null == undefined;

true

null === undefined;

false

now.tostring();

"sat apr 18 2009 08:23:08 gmt+0800 (cst)"

var yessterday = new date(2009,04,17);

undefined

yesterday;

null

1.0 === 1;

true

0/0 === 0/0

false

比較操作符也要考慮轉換的問題。首先基本原則就是盡量往數字上轉,除了一種情況,就是兩個都是str,那麼它們就進行字元比較。另外nan和任何東西比較都是false。

大部分都是很正常的理解,下面一種除外

var str = "this string is " + 1 +2; //this string is 3

這明顯和+的結合律矛盾,不是從左至右的,要特別注意。

它只是刪除reference,並沒有刪除reference指向的內容。

var my = new object( );    // create an object named "my"

my.hire = new date( ); // my.hire refers to a date object

my.fire = my.hire; // my.fire refers to the same object

delete my.hire; // hire property is deleted; returns true

document.write(my.fire); // but my.fire still refers to the date object

操作符和表示式

一.操作符 1.算術操作符 除了 之外其餘的幾個操作符既可以用於計算整型也可以用於計算浮點型資料,只能計算整型資料,得到的結果是餘數 2.移位操作符 右移位操作符 左移時,值最左邊的幾位被丟棄,右邊多出來的幾個空位由0補齊。右移時,從左邊移入新位有兩種方式。一種方案是邏輯移位,左邊移入的數由0填齊 ...

操作符和表示式

太簡單了,不解釋。或 左移或右移位操作符,也不想解釋,就是任性。and or xor 與 或 異或 也不講。sizeof 非,自增,減,與,判斷運算元型別長度,求補,自減,加,乘。看一眼就知道了。和位操作符不同的是它是對表示式的判斷,對值不做改變。expression1 expression2 ex...

point on C 5 操作符和表示式

第四章操作符和表示式 4.1操作符 運算子 4.1.1算術操作符 的兩個運算元都是整數時,執行整除運算,其他情況下執行浮點除法。的兩個運算元必須都是整數,取餘。4.1.2移位操作符 左移操作符,不管邏輯移位還是算術移位都補 0!右移操作符,邏輯移位時補 0,算術移位根據原先該值的符號位來補1或 0 ...