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

  • 相关阅读:
    Kubernetes之Replica Set
    Kubernetes之Replication Controller
    Kubernetes之Deployment
    golang channel select
    golang slice
    epoll的由来
    ceph crush 之 crush_do_rule
    libevent
    P2P资料
    混沌理论学习笔记
  • 原文地址:https://www.cnblogs.com/guDouMaoNing/p/4394709.html
Copyright © 2020-2023  润新知