前端面试基础知识点总结

1.JavaScript有几种类型的值?以及内置对象

  • 栈:原始数据类型(Undefined,Null,Boolean,Number、String、symbol)

  • 堆:引用数据类型(object、array、function)
    两种类型的区别是:存储位置不同;
    原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
    引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体

  • Object 是 JavaScript 中所有对象的父对象
    数据封装类对象:Object、Array、Boolean、Number 和 String
    其他对象:Function、Arguments、Math、Date、RegExp、Error

2.如何判断数据类型?

推荐使用Object.prototype.toString方法进行数据类型判断,因为typeOf不能准确的判断出复杂数据类型,instanceOf只能判断复杂数据类型,constructor属性容易被篡改。

使用该方法我们可以封装一个isType方法来对类型进行判断

const type = (o) => {
    let s = Object.prototype.toString.call(o);
    return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
[
    'Undefined',
    'Null',
    'String',
    'Number',
    'Boolean',
    'Object',
    'Array',
    'Function',
    'RegExp'
].forEach((t) => {
    type['is' + t] = (o) => {
        return type(o) === t.toLowerCase();
    };
});
type.isObject({});
type.isArray([]);

3.Array()和Array.of()区别?

    Array(); //[]
    Array(3); //[ , , ]并不是[3]
    Array(1, 2, 3); //[1, 2, 3]
  • Array方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于 2 个时,Array()才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度。
    Array.of(); //[]
    Array.of(3); //[3]
    Array.of(1, 2, 3); //[1, 2, 3]
  • 相对于Array方法,Array.of()在没有参数、一个参数、三个参数时,返回的都是数组,完全可以替代Array方法。

https://juejin.im/post/5e37d60d6fb9a030094bd9f2

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论