zoukankan      html  css  js  c++  java
  • 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外的一个变量引用的时候,就创建了一个闭包。

    未完待续......

  • 相关阅读:
    Fast polling using C, memcached, nginx and libevent
    为什么MongoDB可以替代MySQL?
    comet server 的介绍及方案选型
    多任务服务器架构设计
    基于libev面向分布式数据系统的C10K服务器设计
    libev & libevent简介
    memcached、redis、mysql、mongodb结合架构数据库系统
    删除数组中的重复元素
    不用运算符比较两个int数的大小
    JDBC之简介
  • 原文地址:https://www.cnblogs.com/p719027365/p/4102496.html
Copyright © 2011-2022 走看看