2021年JS面试题总结
dearweb 发布:2021-05-09 22:50:13阅读:这段时间在面试的过程中遇到了不少问题,今天将最近遇到的问题总结分享给大家,希望能够帮助到各位。
闭包指的是什么,具体特性有哪些,对页面安全有影响吗?
->闭包通俗理解就是能够读取其他函数内部变量的函数,使得函数不被GC回收,如果在开发过程中使用过多或者不规范,容易导致内存泄露,出现安全问题。
如何阻止默认事件
(1)return false;(2) event.preventDefault();
JS添加、删除、替换、插入到某个接点的方法
1)创建新节点 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 2)添加、移除、替换、插入 appendChild() //添加 removeChild() //移除 replaceChild() //替换 insertBefore() //插入 3)查找 getElementsByTagName() //通过标签名称 getElementsByName() //通过元素的Name属性的值 getElementById() //通过元素Id,唯一性
document.load()和document.ready()的区别
document.onload 是在结构和样式,外部js以及图片加载完才执行js;document.ready是dom树创建完成就执行的方法,原生种没有这个方法,jquery中有 $().ready(function)
函数声明与函数表达式的区别在哪?
在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。
Javascript的事件流模型都有什么?
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播;
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的;
“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡;
判断字符串以字母开头,后面可以是数字,下划线,字母,长度为6-30
var reg=/^[a-zA-Z]\w{5,29}$/;
null和undefined的区别在哪?
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。 当声明的变量还未被初始化时,变量的默认值为undefined。 null用来表示尚未存在的对象 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
典型用法是:
1)变量被声明了,但没有赋值时,就等于undefined。
2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
3)对象没有赋值的属性,该属性的值为undefined。
4)函数没有返回值时,默认返回undefined。
null表示"没有对象",即该处不应该有值。
典型用法是:
1) 作为函数的参数,表示该函数的参数不是对象。
2) 作为对象原型链的终点。
new操作符具体做了什么事情
1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到 this 引用的对象中。
3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。
对象的方法有哪些?
Object.assign() 通过复制一个或多个对象来创建一个新的对象。 Object.create() 使用指定的原型对象和属性创建一个新对象。 Object.defineProperty() 给对象添加一个属性并指定该属性的配置。 Object.defineProperties() 给对象添加多个属性并分别指定它们的配置。 Object.entries() 返回给定对象自身可枚举属性的[key, value]数组。 Object.freeze() 冻结对象:其他代码不能删除或更改任何属性。 Object.is() 比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。 Object.isExtensible() 判断对象是否可扩展。 Object.isFrozen() 判断对象是否已经冻结。 Object.isSealed() 判断对象是否已经密封。 Object.keys() 返回一个包含所有给定对象自身可枚举属性名称的数组。 Object.values() 返回给定对象自身可枚举值的数组。
js延迟加载的方式有哪些?
defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)、按需异步载入js。
javascript语言特性中,有哪些方面是相比于其他语言,有哪些不一样的地方
javascript语言实现继承机制的核心就是原型,而不是Java语言那样的类式继承。Javascript解析引擎在读取一个Object的属性的值时,会沿着原型链向上寻找,如果最终没有找到,则该属性值为undefined;如果最终找到该属性的值,则返回结果。与这个过程不同的是,当javascript解析引擎执行“给一个Object的某个属性赋值”的时候,如果当前Object存在该属性,则改写该属性的值,如果当前的Object本身并不存在该属性,则赋值该属性的值。
小礼物走一波,支持作者
赏还没有人赞赏,支持一波吧