区别数据类型和变量类型

  • 数据类型
    • 基本类型:Number,String,Boolean,null,undefined,symbol
    • 引用类型:对象类型(object,function,date,array,正则),
  • 变量类型(变量内存值得类型)

    • 基本类型:保存的是基本类型的数据
    • 引用类型:保存的是地址值
  • 引用变量赋值问题

    • 其实是把a的首地址赋值给b,导致a和b都指向同一个对象内存
      1. var a = {name:'xq'};
      2. var b = a;
      3. a.name = '77';
      4. console.log(b.name); //'77'

undefined 和 null 的区别

undefined代表定义为赋值
null定义并赋值了,只是值为null

  1. var a;
  2. console.log(a); // undefined
  3. a = null;
  4. console.log(a); // null

typeof null === object,可以理解为空对象,但是是JS设计失误

  1. var a = null; // 初始值为null,表明将要赋值为对象
  2. a = [0,1,2];
  3. a =null; // 让a指向的对象成为垃圾对象(被垃圾回收器回收)

初始赋值,表明将要赋值为对象
结束前,让变量赋值为null,可以让对象成为垃圾对象(垃圾回收)

回调函数

定义了;没有调用;但是最终执行了。

常见回调函数
DOM事件回调函数
定时器回调函数
Ajax请求回调函数

立即调用函数(IIFE,Immediately)

作用:隐藏实现,不会污染外部(全局)命名空间

  1. (function(){ // 匿名函数自调用
  2. var a = 3;
  3. console.log('...')
  4. })();