L--前端开发面试知识点(JS相关)

1.DOM操作--怎样添加、移除、移动、复制、创建和查找节点?

1.创建新节点

  createDocumentFragment()    //创建一个DOM片段

  createElement()                    //创建一个具体的元素

  createTextNode()                  //创建一个文本节点

2.添加、移除、替换、插入

  appendChild()

    removeChild()

  replaceChild()

  insertBefore() //在已有的子节点前插入一个新的节点

3.查找

  getElementsByTagName()     //通过标签名称

  getElementsByName()         //通过元素的Name属性的值

  getElementById()               //通过元素的Id,唯一性

 

2.null和undefined的区别?

null是一个表示“无”的对象,转为数值时为0;

undefined是一个表示“无”的原始值,转为数值时为NaN.

当声明的变量还未被初始化时,变量的默认值为undefined。

null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。典型的用法:

  1.变量被声明了,但还没有赋值时,就等于undefined。

  2.调用函数时,应该提供的参数没有提供,该参数等于undefined。

  3.对象没有赋值的属性,该属性的值为undefined。

  4.函数没有返回值时,默认的返回值undefined。

null表示“没有对象”,即该处不应该有值。典型的用法:

  1.作为函数的参数,表示该函数的参数不是对象。

  2.作为对象原型链的终点。

3.new操作符具体干了什么?

1.创建一个空对象,并且this变量应用该对象,同时还继承了该函数的原型。

2.属性和方法被加入到this应用的对象中。

3.新创建的对象由this所引用,并且最后隐世的返回this。

var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj); 

4.JSON的了解?

JSON(javascript object notation)是一种轻量级级数据交换格式。他是基于javascript的一个子集。数据格式简单,易于读写,占用带宽小

JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript原生格式,这意味着在 JavaScript 中处理 JSON数据不需要任何特殊的 API 或工具包。

与XML序列化相比,JSON序列化后产生的数据一般要比XML序列化后数据体积小,所以在Facebook等知名网站中都采用了JSON作为数据交换方式。

在JSON中,有两种结构:对象和数组。

  1. 一个对象以 “ { ”  开始,“ } ” 结束。每个“名称”后跟一个 “ : ” ;“名称/值 对”之间使用 “ ,  ”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用引号括起来,数值型则不需要。如:

var obj={"name":"darren","age":24,"location":"beijing"}  

  2. 数组是值(value)的有序集合。一个数组以 “ [ ” 开始, “ ] ” 结束。值之间使用 “ , ” (逗号)分隔。如:

var jsonlist=[{"name":"darren","age":24,"location":"beijing"},{"name":"weidong.nie","age":24,"location":"hunan"}];

 

5.js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callback)、按需异步载入js

6.如何解决跨域问题?

jsonp、document.domain + iframe、window.name、window.postMessage、服务器上设置代理页面

详细原理:L--js跨域

7.document.write和innnerHTML的区别?

document.write只能重绘整个页面

innnerHTML可以重绘页面的一部分

8.call()和apply()的区别和作用?

区别:apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。例

     call()的第一个参数是上下文,后续是实例传入的参数序列

作用:动态改变某个类的某个方法的运行环境

9.哪些操作会造成内存泄露?

内存泄露指任何对象在你不再拥有或需要他之后仍然存在。

垃圾回收器定期扫描对象,并计算应用了每个对象的其他对象的数量。如果一个对象的应用数量为0(没有其他对象引用过该对象 ),或对该对象的唯一引用是循环的,那么该对象的内存即可回收。

setTimeout的第一个参数使用字符串而非函数的话,会引发内存泄露。闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。