js高级(部分)

一、JS的数据类型
1.原始数据类型
  Undefined数据类型的值只有1个:undefined
  Null数据类型的值只有1个:null
  Boolean数据类型的值只有2个:true、false
  Number的数据类型的值:所有的浮点数和整数
  String的数据类型的值:所有的字符串
2.引用数据类型
  1)Object类型
  2)Array类型
  3)Function类型

 

eg. //原始数据类型
  var i = 9;
  var j= i;
  i =3;
  console.log(i); // 3
  console.log(j); // 9

  // 引用数据类型

  var tempa = [1,2];
  var temparray = tempa;
  tempa[0] =6;

  console.log(tempa); // [6,2]
  console.log(temparray); // [6,2]

可以看出两者的区别:
  原始数据类型:不同变量会分配不同存储空间,并且存储空间中存储的是该变量的值.赋值操作传递的是变量的值.改变一个变量不会影响另一个变量的值.
  引用数据类型:赋值是吧原对象引用传递给另一个引用.对数组而言当一个数组引用赋值给另一个数组引用后,两个引用指向同一个数组,即指向同一块内存空间.

二、关于闭包
闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
eg.1.
  function show(){
  var i = 0;
  var fun = function(){
    i++;
  console.log(i);
  }
  return fun;
  }

  var tempfun = show();

  tempfun();
  tempfun();
  输出1,2

2.(function(i){console.log(i)})(7);
  输出7

以上代码有两个特点:
1、函数b嵌套在函数a内部;
2、函数a返回函数b。
这样在执行完var c=a( )后,变量c实际上是指向了函数b,再执行c( )后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:
当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

未完待续......

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