写在前面
昨儿的华为笔试做的和渣渣一样,哎,半夜做题的效果真的不咋地。。
下周面百度的前端,发现虽然写前端有5年多了,发现自己还是有很多知识不扎实
(一)数组方法
1、数组删除某元素
(1)splice
A.删除某元素,改变原始数组
let arr=[1,2,3,4]
arr.splice(1,1)
console.info(arr)
输出
[1, 3, 4]
B.修改
let arr=[1,2,3,4]
arr.splice(1,1,'lll')
console.info(arr)
输出为
[1, "修改", 3, 4]
C.替换
let arr=[1,2,3,4]
arr.splice(1,2,'替换')
console.info(arr)
输出为
[1, "替换", 4]
(2)delete
删除某元素后,数组长度不变,该项为空
let arr=[1,2,3,4]
delete arr[1]
console.info(arr)
console.info(arr.length)
输出为
[1, empty, 3, 4]
4
(二)JavaScript数据类型
目前JavaScript的数据类型有8个
1、基本数据类型
undefined
Null
Boolean
number
String
Symbol(es6新增,表示独一无二的值)
bigint(es10新增)
直接存储在栈中,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
2、引用数据类型
object:本质是由一组无序的名值对组成。里面包含function,Array,Date等
同时存储在栈(stack)和堆(heap)中,占据空间大、大小不固定。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其中栈中的地址,取得地址后从堆中获得实体
3、数据类型的判断
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]]
Object.prototype.toString.call('') ; // [object String]
Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用
也有其他方法,都不靠谱,最靠谱的就是Object.prototype.toString().call()
以上
其他常考题有:
特殊运算(加减乘除)
如何进行深拷贝
V8为什么会快(以及内存的垃圾回收机制)
主流的浏览器内核是什么
如何进行屏幕适配
跨域
HTML5用法
CSS3用法
浏览器是如何渲染数据的
一个URL从访问到最终渲染出来都经历了什么
VUE的重要特性及基础原理
REAT的使用
HTTP协议的三次握手
一些算法题
排序都有哪几种
数据结构(二叉树、堆和栈的不同)