JavaScript概念

1.基本数据类型:5个  Number  String  Boolean  null  undefined

2.引用数据类型: 2个  object  function

3.作用域:简单的说作用域就是变量的可访问范围,它控制着内部变量的可见性和生命周期

 全局作用域:浏览器加载的时候开辟的栈内存空间

 私有作用域:全局作用域下 的 函数运行时开辟的栈内存空间就是私有作用域(闭包);

 闭包:官方解释是  一个拥有多个变量和绑定了这个变量的环境的表达式(通常是一个函数),变量也是该表达式的一部分

 通俗的讲所有的function都是一个闭包。

 嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的'闭包';

 闭包的缺点:会制造出不被销毁的栈内存

 闭包的优点:1、保护内部变量不被外界污染,内部变量也不污染外部变量

                 2、可以通过返回值,返回内部变量的值

function  fn(){
    var num = 1; // 当退出函数fn后,局部变量num不会销毁而是在栈内存
  return fn2(){// 一直存活             
      num++;  // 形成了一个严格意义上的闭包
       alert(num);
   }
}
var closure = fn();

 

作用域链:

4.JS中的内存空间: 2种  栈内存  堆内存

栈内存:提供JS代码的执行环境;存储基本数据类型的值;

           ->全局作用域或者私有作用域 其实都是栈内存

堆内存:存储引用数据类型的值(属性名和属性值,函数是把函数体中的代码当做字符串存储进去);

5.变量:  临时存储的值;占位符   js是赋值的时候才知道 变量类型;

全局变量:window下声明的变量(包括隐式声明的变量)

私有变量:私有作用域下声明的变量

变量的生命周期: 变量的生命周期伴随所在作用域的结束而销毁

对于全局变量的生命周期是永久的,除非我们主动去销毁它

对于局部变量的生命周期,随着函数调用结束而被销毁

 

posted @ 2017-05-14 01:21  且听风吟V  阅读(1156)  评论(0编辑  收藏  举报