码迷,mamicode.com
首页 > Web开发 > 详细

js高级(部分)

时间:2014-11-16 22:58:21      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:io   ar   sp   strong   数据   on   log   cti   代码   

一、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外的一个变量引用的时候,就创建了一个闭包。

未完待续......

js高级(部分)

标签:io   ar   sp   strong   数据   on   log   cti   代码   

原文地址:http://www.cnblogs.com/p719027365/p/4102496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!