有个问题,新手请教

来源:2-7 编程练习

tracylovetmac1

2016-06-18 15:21

请问两个=是什么意思呢,和一个=有什么不同吗?两者的作用有什么区别呢??谢谢

写回答 关注

5回答

  • 超神的丶乔巴
    2016-06-18 16:04:04
    已采纳

    关于等于好 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。

    超神的丶乔巴 回复tracyl...

    最后一点有个错误,基础类型与高级类型比较: var a = new Array(); a[0] = "测试"; var b = "测试"; 其实应该是:alert(a[0]==b); //true 但是alert(a==b);也是为true,这是因为JS会直接把数组里的第一个值拿出来进行比较。所以为true 如果是 a[0] = "111"; a[1] = "测试" 那么比较结果就为false了。

    2016-06-18 17:06:14

    共 2 条回复 >

  • 自由1号
    2016-06-18 15:51:20

    = 是赋值, == 是比较

  • 小学徒_after
    2016-06-18 15:47:28

    =一般是赋值,如int a=2;就是将数值2赋给变量a。==是判断符号,如语句:2==3  判断结果就是错误,返回一个真假值(true/false)(在C语言中没有true、false。0代表false,1代表true)。希望可以解决。

  • huangxionging
    2016-06-18 15:46:34

    = 是赋值, == 才是比较

  • Scrat_kong
    2016-06-18 15:44:06

    一个是赋值语句中使用,两个在if 等判断语句(条件)中使用

    tracyl...

    也就是说一个=一般用于赋值,比如var变量的赋值,而两个=一般用在判断语句中,是这样理解吗??谢谢

    2016-06-18 15:54:10

    共 1 条回复 >

JavaScript入门篇

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

738244 学习 · 9560 问题

查看课程

相似问题