首页 > 其他 > 详细

为面试做准备——前端实习面试题整理(一)

时间:2019-10-23 22:45:49      阅读:127      评论:0      收藏:0      [点我收藏+]

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

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在堆内存中地址是不同的。

 

  

为面试做准备——前端实习面试题整理(一)

原文:https://www.cnblogs.com/autumn-starrysky/p/11728660.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!