• 前端知识整理(一)【数据类型】


    (以下是从各种网站、同学处整理的前端实习面试题,答案也为自己整理,有错误的话欢迎指正)

    1、谈谈Js中基本类型和引用类型。

    答:①基本类型:undefined、null、string、number、Boolean、symbol(ES6)

       其中分为普通基本类型和特殊基本类型:

       普通基本类型:undefined、null、symbol

          特殊基本类型:string、number、Boolean

      ②引用类型:Object、Array、RegExp、Date、Function

           ③不同:

      基本类型

    • 基本类型的变量是存放在栈内存(Stack)里的
    • 基本数据类型的值是按值访问的
    • 基本类型的值是不可变的
    • 基本类型的比较是它们的值的比较

      引用类型

    • 引用类型的值是保存在堆内存(Heap)中的对象(Object)
    • 引用类型的值是按引用访问的
    • 引用类型的值是可变的
    • 引用类型的比较是引用的比较

      ④堆内存和栈内存

      栈:连续存储,大小固定。特殊地,null属于object类型,表示一个空指针对象,但是存在栈内存中。

      堆:非连续的树形存储结构。特殊地,new一个实例,生成的是一个对象,即使

    var foo = new String("123123")
    var bar = String("123123")
    console.log(a==b, a===b)

      会输出true false,能够说明new的实例是对象。另外,

    var foo = new String("123") var bar = new String("123") console.log(foo==bar, foo===bar)

      会输出false false,这是因为两者都是存储在堆内存中,但指针指向不一致。

      ⑤按值访问和按引用访问&&按引用比较

      基本类型的值是不可变的,比如:

    var a = 10;
    var b = a; 
    a ++ ;
    console.log(a); // 11
    console.log(b); // 10

      而引用类型的值可变,比如:

    var a = [1,2,3];
    var b = a;
    b.push(4);
    alert(b);  //[1,2,3,4]
    alert(a);  //[1,2,3,4]   对象类型 : 赋值不仅是值的复制,而且也是引用的传递
    
    var a = [1,2,3];
    var b = a;
    b = [1,2,3,4];
    alert(b); //[1,2,3,4]
    alert(a); //[1,2,3]

      对于按引用访问,参考一下两段代码:

        var person1 = '{}';
        var person2 = '{}';
        console.log(person1 == person2); // true 
        var person1 = {};
        var person2 = {};
        console.log(person1 == person2); // false 

      上面一段是字符串之间的比较,而下面一段是对象之间的比较。至于false,这是因为引用类型时按引用访问的,换句话说就是比较两个对象的堆内存中的地址是否相同,那很明显,person1和person2在堆内存中地址是不同的。

      

  • 相关阅读:
    48.Warning: (vsim-3534) [FOFIR]
    47.MIF和COE文件格式
    46.谈谈SDRAM的作用
    45.modelsim仿真include文件
    44.do文件格式
    43.技术与产品的价值
    42.JTAG接口使用注意
    41.使用Chipscope时如何防止reg_wire型信号被优化掉
    40.格雷码与二进制码之间的转换
    39.原码、反码、补码的转换
  • 原文地址:https://www.cnblogs.com/autumn-starrysky/p/11728660.html
Copyright © 2020-2023  润新知