变量中包含基本数据类型引用数据类型,基本类型指简单的数据值,引用类型由多个值构成的对象.
  引用类型可以为其添加属性和方法,也可以改变和删除属性和方法.
复制变量值:
    基本类型:一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,并把该值分配到新变量分配的位置上,两者任何操作不会互相影响.
    引用类型:当一个变量向另一个变量复制引用类型的值时,同样也会存储在变量的值复制一份放到位新变量分配的空间中,但是不同的视,这个值的副本只是一个指针,而这个指针指向存储在堆中的一个对象,两个变量引用一个对象,改变其中一个变量,另一个也会随之改变.
传递参数:
    所有函数的参数都是按值传递的.
    在向函数的参数传递基本类型值时,被传递的值会被复制给一个局部的变量(命名参数.arguments对象中的一个元素)
    在向参数传递引用类型的值时,即使是按值传递,指向的也是同一个对象,因为变量指向的对象在堆内存中只有一个.
    typeof操作符是一个确定一个变量是字符中数值,布尔值.undefined的最佳工具,如果变量是null或对象,则会返回object
    instanceof操作符是一个确定变量是引用类型的操作符.
        instanceof检测引用类型和object构造函数时  return true 
        instanceof检测基本数据类型值时            return false
 
作用域:
    最外围的作用域为全局作用域,根据宿主环境不同,其表示作用域的对象也不同,未声明的变量皆为全局变量.
    除全局作用域以外的所有作用域皆为局部作用域,var声明的变量为局部变量
    js中没有块级作用域一说
作用域链:
    是由局部作用域中的深层作用域由内向外冒泡寻找,一直到全局作用域.
    局部作用域可以访问全局作用域,但是全局作用域不可以访问局部作用域中的变量.
延长作用域链
    with()延长作用域链
    实例
var person={};
    with(person){
        name="xiaoming";
        sex="male";
      }
基本数据类型
引用数据类型
不可修改
可以修改
保存在栈内存
保存在堆内存,指针地址保存在栈内存中
按值访问
按引用访问
比较时,值相等就相等
比较时,同一引用才相等
复制时,创建一个副本
复制时,,复制的其实只是一个指针
按值传递参数
按值传递参数
用typeof检测类型
用instanceof检测类型

 
垃圾收集:
        js是全自动的,不必像c和c++之类手动收集垃圾,可以让我们少操心了.
        js中垃圾收集分为两种,一种是标记清除法,还有一种是引用计数.
    标记清除是垃圾收集器在运行的时候会给在内存中的所有变量都打上标记,然后,它会去掉环境中的变量和被环境中变量引用的变量的标记,而在此之后再被添加上标记的变量就被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了,最后完成垃圾收集.
    引用计数是跟踪每个值被引用的次数,当声明了一个变量并将一个引用类型值赋给该变量时,该值引用的次数加1,反之减1,为0时,说明无法访问,收回所占用内存.
但是会涉及循环引用的问题,循环引用会导致永远都不会被清理,一直占用内存,可将值设置为null来手动解除引用.
js解析
  1.预解析
     当前作用域var和function关键词的会事先声明(变量提升),函数的优先级比var声明的优先级高,var声明的变量会被提升为undefined,声明函数会把整个函数提升到最前面.
  2.逐行解读
个人理解,欢迎大佬们给提意见!!

作用域,作用域链,垃圾收集,js解析的更多相关文章

  1. JavaScript函数之作用域 / 作用链域 / 预解析

    关于作用域和作用链域的问题,很多文章讲的都很详细,本文属于摘录自己觉得对自己有价值的部分,留由后用,仅供参考,需要查看详细信息请点击我给出的原文链接查看原文件 做一个有爱的搬运工~~ -------- ...

  2. JS高级---作用域,作用域链和预解析

    作用域,作用域链和预解析     变量---->局部变量和全局变量, 作用域: 就是变量的使用范围   局部作用域和全局作用域 js中没有块级作用域---一对括号中定义的变量,这个变量可以在大括 ...

  3. JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)

    1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...

  4. JavaScript之作用域-作用域链

    作用域 ==> 作用域链   作用域:变量可以其作用的区域(声明定义好一个变量,变量可以在哪些范围内使用) 分类:全局作用域和局部作用域(函数作用域):在js中,目前全局有作用域以及函数可以形成 ...

  5. 【作用域】词法作用域(静态作用域,如:js)、动态作用域(如:.bash脚本)

    作用域 作用域是指程序源代码中定义变量的区域. 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. JavaScript 采用词法作用域(lexical scoping),也就是静态作 ...

  6. Java虚拟机对象存活标记及垃圾收集算法解析

    一.对象存活标记 1. 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1:当引用失效时,计数器就减1:任何时刻计数器都为0的对象就是不可能再被使用的. 引用计数算法(Re ...

  7. csv表格处理(下)--纯JS解析导入csv

    多日前的上篇介绍了csv表格,以及JS结合后端PHP解析表格填充表单的方法.其中csv转换成二维数组的时候逻辑比较复杂多坑,幸好PHP有丰富的库函数来处理,而现在用JS解析的话就没有那么幸运了,一切都 ...

  8. CSS控制XML与通过js解析xml然后通过html显示xml中的数据

    使用CSS控制XML的显示 book.css bookname{ display:block;color:Red} author{ display:block;font-style:italic} p ...

  9. JS解析XML文件和XML字符串

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...

随机推荐

  1. Java入门系列之集合Hashtable源码分析(十一)

    前言 上一节我们实现了散列算法并对冲突解决我们使用了开放地址法和链地址法两种方式,本节我们来详细分析源码,看看源码中对于冲突是使用的哪一种方式以及对比我们所实现的,有哪些可以进行改造的地方. Hash ...

  2. SSM整合2(springMVC+mybatis)

    客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容进行数据转换,然后将转换后的值覆给con ...

  3. kafka cmd首个单机例子配置

    下载地址:http://kafka.apache.org/downloads       http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12- ...

  4. mysql定时任务(event事件)

    1.事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”. 事件和触发器类似,都是在 ...

  5. iOS----------文字逐个显示

    参考文档: https://blog.csdn.net/et295394330/article/details/50529862

  6. Spring Boot 2 + Thymeleaf:服务器端表单验证

    表单验证分为前端验证和服务器端验证.服务器端验证方面,Java提供了主要用于数据验证的JSR 303规范,而Hibernate Validator实现了JSR 303规范.项目依赖加入spring-b ...

  7. frp内网渗透实现ssh外网访问家里树莓派(树莓派raspbian系统+腾讯云contos7)

    只有信用卡大小的它,同时也是一台功能完备的电脑(树莓派),把内网能玩的功能都玩了个遍,自然就有了外网访问这台树莓派的需求.一样也是查阅了无数文章,研究了无数个方案,最终试验成功用FRP实现了内网穿透, ...

  8. Linux CentOS 6.5 卸载、安装JDK1.8

    卸载系统自带的jdk 1. 查询系统是否已经安装了jdk rpm -qa|grep java 2. 卸载已安装的jdk, 系统可能会自带多个jdk版本, 按需卸载 rpm -e --nodeps ja ...

  9. JS运动---运动基础(缓冲运动)

    (1)手风琴效果 分析: (2)基础缓冲运动 接下来取整 原因: px为计算机识别的最小单位,1px无法再往下拆分.所以css如果取值200.5px,解析时计算机会自动将其改为200px注意:这里的数 ...

  10. 浅谈JS重绘与回流

    在说浏览器渲染页面之前,我们需要先了解两个点,一个叫 浏览器解析 URL,另一个就是本章节将涉及的 重绘与回流: 重绘(repaint):当元素样式的改变不影响布局时,浏览器将使用重绘对元素进行更新, ...