有个问题,新手请教
请问两个=是什么意思呢,和一个=有什么不同吗?两者的作用有什么区别呢??谢谢
请问两个=是什么意思呢,和一个=有什么不同吗?两者的作用有什么区别呢??谢谢
2016-06-18
关于等于好 JS里有 = ,==,===
纯手打,请采纳:
如果你刚开始学JS可能看不懂我下面说的,但是= 和 == 你肯定能看得懂。 耐着性子看完,等到学到后边再回头看我说的这个答案,你就会明白我说的是什么意思了。
=就是赋值,比如 a = 100。 再alert(a); 就会弹窗100了。
==是两个变量内容的比较,结果相同返回true,结果不同返回false。
比如:
var a = 1;
var b = 1;
if(a == b) // 判断a和b是否想等,如果想等执行 alert(); 语句。
{
alert("a等于b!");
}
但是如果你这样写:
if(a = b)
{
alert("a等于b");
}
这个语法是错误的。 因为 a = b 是把a的值赋值给b。 但是没有返回值。所以就无法用if语句来判断了。
== 和 === 是比较
1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
例如:alert(1=="1");
alert(1==="1");
第一个结果是true,第二个结果是false
2)同类型比较,直接进行“值”比较,两者结果一样
例如:alert(1==1);
alert(1===1);
两个结果都是true.
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
就是他们指向的内存里的地址值。
比如:
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,是因为他们两个是不同的对象,在内存里分配了两块不同的空间,也就意味着他们的内存地址不同,再因为高级类型的==还有===都是进行指针地址的比较,所以都是false
d和d相比为true,是因为c在内存里创建了一个对象。然后c指向了这个对象。然后d等于c,所以他俩指向的是同一个对象。 所以两个都是true。
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
var a = new Array();
a[0] = "测试";
var b = "测试";
alert(a==b); //true
把b的第一个数组内的值拿出来转换成基础类型和b进行比较。他俩都是字符串"测试",所以是true
2)因为类型不同,===结果为false
var a = new Array();
a[0] = "测试";
var b = "测试";
alert(a===b); //false
因为a是高级类型里的数组类型,而b是基础类型里的String(字符串)类型。 所以类型不同,为false。
举报