var a = new Array(); ??????? var b = new Array(); ??????? alert(a==b);????????//false ??????? alert(a===b);????//false ??????? var c = new Array(); ??????? var d = c; ??????? alert(c==d);????????//true ??????? alert(c===d);????//true
????????var a = new Array(); ??????? a[0] = "測試"; ??????? var b = "測試"; ??????? alert(a==b);????//true ???? 把b的第一個數(shù)組內(nèi)的值拿出來轉(zhuǎn)換成基礎(chǔ)類型和b進(jìn)行比較。他倆都是字符串"測試",所以是true
2)因為類型不同,===結(jié)果為false
?var a = new Array(); ??????? a[0] = "測試"; ??????? var b = "測試"; ??????? alert(a===b);??? //false
最后一點有個錯誤,基礎(chǔ)類型與高級類型比較:
var a = new Array();
a[0] = "測試";
var b = "測試";
其實應(yīng)該是:alert(a[0]==b); //true
但是alert(a==b);也是為true,這是因為JS會直接把數(shù)組里的第一個值拿出來進(jìn)行比較。所以為true
如果是
a[0] = "111";
a[1] = "測試"
那么比較結(jié)果就為false了。
2016-06-18
關(guān)于等于好 JS里有 = ,==,===
純手打,請采納:
如果你剛開始學(xué)JS可能看不懂我下面說的,但是= 和 == 你肯定能看得懂。 耐著性子看完,等到學(xué)到后邊再回頭看我說的這個答案,你就會明白我說的是什么意思了。
=就是賦值,比如? a = 100。 再alert(a); 就會彈窗100了。
==是兩個變量內(nèi)容的比較,結(jié)果相同返回true,結(jié)果不同返回false。
比如:
var a = 1;
var b = 1;
if(a == b)????//????判斷a和b是否想等,如果想等執(zhí)行 alert(); 語句。
{
????alert("a等于b!");
}
但是如果你這樣寫:
if(a = b)
{
????alert("a等于b");
}
這個語法是錯誤的。? 因為 a = b? 是把a(bǔ)的值賦值給b。 但是沒有返回值。所以就無法用if語句來判斷了。
== 和 === 是比較
1、對于string,number等基礎(chǔ)類型,==和===是有區(qū)別的
1)不同類型間比較,==之比較“轉(zhuǎn)化成同一類型后的值”看“值”是否相等,===如果類型不同,其結(jié)果就是不等
例如:alert(1=="1");
??????? alert(1==="1");
第一個結(jié)果是true,第二個結(jié)果是false
2)同類型比較,直接進(jìn)行“值”比較,兩者結(jié)果一樣
例如:alert(1==1);
??????? alert(1===1);
兩個結(jié)果都是true.
2、對于Array,Object等高級類型,==和===是沒有區(qū)別的
進(jìn)行“指針地址”比較
就是他們指向的內(nèi)存里的地址值。
比如:
var a = new Array();
??????? var b = new Array();
??????? alert(a==b);????????//false
??????? alert(a===b);????//false
??????? var c = new Array();
??????? var d = c;
??????? alert(c==d);????????//true
??????? alert(c===d);????//true
a和b相比為false,是因為他們兩個是不同的對象,在內(nèi)存里分配了兩塊不同的空間,也就意味著他們的內(nèi)存地址不同,再因為高級類型的==還有===都是進(jìn)行指針地址的比較,所以都是false
d和d相比為true,是因為c在內(nèi)存里創(chuàng)建了一個對象。然后c指向了這個對象。然后d等于c,所以他倆指向的是同一個對象。 所以兩個都是true。
3、基礎(chǔ)類型與高級類型,==和===是有區(qū)別的
1)對于==,將高級轉(zhuǎn)化為基礎(chǔ)類型,進(jìn)行“值”比較
????????var a = new Array();
??????? a[0] = "測試";
??????? var b = "測試";
??????? alert(a==b);????//true
???? 把b的第一個數(shù)組內(nèi)的值拿出來轉(zhuǎn)換成基礎(chǔ)類型和b進(jìn)行比較。他倆都是字符串"測試",所以是true
2)因為類型不同,===結(jié)果為false
?var a = new Array();
??????? a[0] = "測試";
??????? var b = "測試";
??????? alert(a===b);??? //false
因為a是高級類型里的數(shù)組類型,而b是基礎(chǔ)類型里的String(字符串)類型。 所以類型不同,為false。
2016-06-18
= 是賦值, == 是比較
2016-06-18
=一般是賦值,如int a=2;就是將數(shù)值2賦給變量a。==是判斷符號,如語句:2==3 ?判斷結(jié)果就是錯誤,返回一個真假值(true/false)(在C語言中沒有true、false。0代表false,1代表true)。希望可以解決。
2016-06-18
= 是賦值, == 才是比較
2016-06-18
一個是賦值語句中使用,兩個在if 等判斷語句(條件)中使用