博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js高级(部分)
阅读量:5172 次
发布时间:2019-06-13

本文共 1198 字,大约阅读时间需要 3 分钟。

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

未完待续......

转载于:https://www.cnblogs.com/p719027365/p/4102496.html

你可能感兴趣的文章
hdu2089不要62(数位dp)
查看>>
JAVA输出最大值和最小值
查看>>
64位weblogic11g安装
查看>>
oracle、mysql、sql server等;流行数据库的链接驱动配置
查看>>
UvaLive 6664 Clock Hands
查看>>
PCB 周期计算采用 SQL 函数调用.net Dll 标量函数 实现
查看>>
Problem B: 取石子
查看>>
dbflow 批量 增删查改
查看>>
Mybatis常见配置错误总结
查看>>
Python学习笔记001——Linux
查看>>
Vue: 常用指令
查看>>
Asp.Net中的跨平台的
查看>>
第一次作业
查看>>
工作日记
查看>>
weblogic 10.x 上开发restful服务
查看>>
在团队中我的索引卡任务
查看>>
我的一点企业做云经验
查看>>
简单介绍.Net3.0 中跨线程访问控件
查看>>
oracle imp 工具可能出现的问题
查看>>
bzoj1045题解
查看>>