js 一些小知识点

整理了js知识点,
可能说的有点潜。
希望对你有帮助,
还需什么请倾诉。

1、介绍js的基本数据类型


答: Undefined、Null、Boolean、Number、String、function

2、this对象的理解


答:this总是指向函数的直接调用者(而非间接调用者);

  如果有new关键字,this指向new出来的那个对象;

  在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window。

3、DOM怎样添加、移除、移动、复制、创建和查找节点

答:

// 创建新节点

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

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

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

  // 添加、移除、替换、插入

  appendChild()

  removeChild()

  replaceChild()

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

  // 查找

  getElementsByTagName() //通过标签名称

  getElementsByName() //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)

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

4、null和undefined的区别?

答:

  null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

  undefined:

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

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

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

  (4)函数没有返回值时,默认返回undefined。

  null:

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

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

5、new操作符具体干了什么呢?

答:

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

  (2)属性和方法被加入到 this 引用的对象中。

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

6、JSON 的了解?

答:

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。
  格式:采用键值对,例如:{'age':'12', 'name':'back'}

7、call() 和 apply() 的区别和作用?

答:

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

  如:function.apply(this,[1,2,3]);

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

  如:function.call(this,1,2,3);

8、你有哪些性能优化的方法?

答:

  (1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

  (2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

  (3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

  (4) 当需要设置的样式很多时设置className而不是直接操作style。

  (5) 少用全局变量、缓存DOM节点查找的结果。

  (6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

  (7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

9、哪些常见操作会造成内存泄漏?

答:

  内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。

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

  setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。

  闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)。

10、i的问题(即执行时机)

怎么触发的?
    1.循环中加事件,事件中使用i
    2.循环中加定时器,定时器中使用i
怎么解决?
    1.自定义一个属性
    2.封闭空间:能解决i的问题和变量名冲突的问题
        exp:(function(){

             })();
    3.作用域:
        全局、局部和闭包
再见了世界

不要走

送你一句:其实失败并不可怕 可怕的是你还相信这句话


js 一些小知识点_第1张图片
哈哈

你可能感兴趣的:(js 一些小知识点)