JavaScript基础知识点

127 阅读2分钟

1. js中数据类型

5种基础数据类型undefined , Null , Boolean , Number , String

1种复杂数据类型Object

2. typeof 返回哪些数据类型

string,boolean,number,undefined,function,object

typeof(null) object

typeof() 最后的返回值是一个字符串

3. null和undefined区别

相同点:

  1. 在 if 语句中 null 和 undefined 都会转为false
  2. 两者用 "=" 比较也是相等

不同点:

  • null表示没有对象或者说空对象,即该处不应该有值
    1. 作为函数的参数,表示该函数的参数不是对象
    2. 作为对象原型链的终点
    3. null转化为number数据类型是0
  • undefined表示缺少值,即此处应该有值,但没有定义
    1. 定义了形参,没有传实参,显示undefined
    2. 对象属性名不存在时,显示undefined
    3. 函数没有写返回值,即没有写return,拿到的是undefined
    4. 写了return,但没有赋值,拿到的是undefined
    5. null转化为number数据类型是NaN

4. 事件流模型 事件委托 事件监听 阻止冒泡

事件冒泡 从当前触发的事件目标一级一级往上传递,依次触发,直到document为止。

事件捕获 从document开始触发,一级一级往下传递,依次触发,直到真正事件目标为止。

结合前面二者原理可以做到事件委托。

事件委托是指 通过监听一个父元素,来给不同的子元素绑定事件,减少监听次数,从而提升速度。

addEventListener('click',func,boolean); //默认为false即事件冒泡 true为事件捕获。
//阻止冒泡的代码:
window.event.cancelBubble = true;//ie
event.stopPropagation();//非ie

5.call apply bind三者用法及区别

三者都是用来改变函数的this对象的指向。并且前两者都会直接执行。

而bind不会,bind返回值是一个改变过this指向的函数。

func.call(obj,param1,param2,param3,...); 
func.apply(obj,[param1,param2]);
func.bind(obj,param1,param2,param3,...);

apply还有一些巧妙用法。利用其可以解析数组为一个个参数的特性。 都是利用了Math.max() 括号内可以存在任意个参数的特性以及apply可以解析数组为参数。

//取出最大/最小值
var max=Math.max.apply(null,Array)
var min=Math.min.apply(null,Array)
//合并数组。
vararr1=new Array("1","2","3");  
vararr2=new Array("4","5","6");  
Array.prototype.push.apply(arr1,arr2);