javaScript—这些年被面试官问烂了的面试题
Posted 可 乐 伢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript—这些年被面试官问烂了的面试题相关的知识,希望对你有一定的参考价值。
ID:可乐伢
没错这又是一篇持续更新的博客,预计999999999999999999999题(强烈推荐收藏)
文章目录
前言
提示:大多数人会觉得基础很简单。忽略。但如果js基础你回答的不好,那么你在面试官心中的心中就已经是不太符合了。大佬请忽略此提示
提示:以下是本篇文章正文内容,下面案例可供参考
一、基础模块
1.js类型判断
基本数据类型:Undefined、Null、Boolean、Number、String,Symbol
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
-
typeof
console.log(typeof bool); //boolean console.log(typeof num);//number console.log(typeof str);//string console.log(typeof und);//undefined console.log(typeof nul);//object console.log(typeof arr);//object console.log(typeof obj);//object console.log(typeof fun);//function console.log(typeof s1); //symbol console.log(typeof NaN);// number console.log(typeof false );// boolean typeof可以识别出基本类型boolean,number,undefined,string,symbol,但是不能识别null。 不能识别引用数据类型,会把null、array、object统一归为object类型,但是可以识别出function 所以typeof可以用来识别一些基本类型。
-
instanceof
console.log(bool instanceof Boolean);// false console.log(num instanceof Number);// false console.log(str instanceof String);// false console.log(und instanceof Object);// false console.log(nul instanceof Object);// false console.log(arr instanceof Array);// true console.log(obj instanceof Object);// true console.log(fun instanceof Function);// true console.log(s1 instanceof Symbol);// false 从结果中看出instanceof不能识别出基本的数据类型 number、boolean、string、undefined、 unll、symbol。 但是可以检测出引用类型,如array、object、function,同时对于是使用new声明的类型,它还可 以检测出多层继承关系
-
constructor
console.log(bool.constructor === Boolean);// true console.log(num.constructor === Number);// true console.log(str.constructor === String);// true console.log(arr.constructor === Array);// true console.log(obj.constructor === Object);// true console.log(fun.constructor === Function);// true console.log(s1.constructor === Symbol);//true null、undefined没有construstor方法,因此constructor不能判断undefined和null。但是他 是不安全的,因为contructor的指向是可以被改变。
-
Object.prototype.toString.call
console.log(Object.prototype.toString.call(bool));//[object Boolean] console.log(Object.prototype.toString.call(num));//[object Number] console.log(Object.prototype.toString.call(str));//[object String] console.log(Object.prototype.toString.call(und));//[object Undefined] console.log(Object.prototype.toString.call(nul));//[object Null] console.log(Object.prototype.toString.call(arr));//[object Array] console.log(Object.prototype.toString.call(obj));//[object Object] console.log(Object.prototype.toString.call(fun));//[object Function] console.log(Object.prototype.toString.call(s1)); //[object Symbol] 此方法可以相对较全的判断js的数据类型。至于在项目中使用哪个判断,还是要看使用场景,具体的选 择,一般基本的类型可以选择typeof,引用类型可以使用instanceof。
Symbol是干嘛的:
Symbol是 ES6 引入了一种新的原始数据类型 ; Symbol不是直接存储数据的, 而是, 作为一个独一无二的key, 放置数据的, 防止数据因为重复, 无法存进数据对象中,例如: obj中,存入key为1和‘1’的值, 后面的会把前面的覆盖掉.
2.js数组方法(谨记哪些能改变,哪些不能改变原数组)
a)不会改变原数组哦:
-
concat()—连接两个或更多的数组,并返回结果。
-
every()—检测数组元素的每个元素是否都符合条件。
-
some()—检测数组元素中是否有元素符合指定条件。
-
filter()—检测数组元素,并返回符合条件所有元素的数组。
-
indexOf()—搜索数组中的元素,并返回它所在的位置。
-
join()—把数组的所有元素放入一个字符串。
-
toString()—把数组转换为字符串,并返回结果。
-
lastIndexOf()—返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
-
map()—通过指定函数处理数组的每个元素,并返回处理后的数组。
-
slice()—选取数组的的一部分,并返回一个新数组。
-
valueOf()—返回数组对象的原始值。
b)会改变原数组哦:
-
pop()—删除数组的最后一个元素并返回删除的元素。
-
push()—向数组的末尾添加一个或更多元素,并返回新的长度。
-
shift()—删除并返回数组的第一个元素。
-
unshift()—向数组的开头添加一个或更多元素,并返回新的长度。
-
reverse()—反转数组的元素顺序。
-
sort()—对数组的元素进行排序。
-
splice()—用于插入、删除或替换数组的元素。
-
fill()—方法用于将一个固定值替换数组的元素
-
注意:修改数组,这就导致元素移动,下标也会改变
二、进阶模块
1.JS哪些操作会造成内存泄露
a. 意外的全局变量引起的内存泄露
b . 闭包引起的内存泄露.
c. 没有清理的DOM元素引用
d. 被遗忘的定时器或者回调
e. 子元素存在引起的内存泄露
总结
提示:太忙了,一有时间我就会持续整理,周三今天我也更新了,所以…你懂的
感谢大佬们的支持!!!
以上是关于javaScript—这些年被面试官问烂了的面试题的主要内容,如果未能解决你的问题,请参考以下文章
耗时一个月,我把问烂了的网络安全2023年必考面试题总结了一下
面了6家大厂,我把问烂了的《Java八股文》打造成3个PDF。共1700页
面了6家大厂,我把问烂了的《Java八股文》打造成3个PDF。共1700页!!