一,基本类型和引用类型的值
基本类型的值是按值访问的,引用类型的值是保存在内存中的对象
1,动态的属性
  只有引用类型的值可以添加属性方法
  不能给基本类型添加属性和方法
2,复制变量值
  复制基本类型的值,两个变量参与的操作互不影响
  复制引用类型的值,两个变量引用同一个对象,改变之一,会影响其二
3,传递参数
  按值传递,被传递的值会被复制给一个局部变量
  函数内部重写对象,这个变量引用就是一个局部对象了,这个对象会在函数执行 后消失
4,检验类型
  instanceof操作符
  result = 变量 instanceof 类型 返回true或false
二,执行环境及作用域
全局环境是window对象
1,延长作用域链
  try-catch语句的catch块
  with语句
2,没有块级作用域
  if和for语句 当中的变量声明在if和for语句结束后也依旧存在于循环外部的 执行环境中
  1)声明变量
  var声明的变量添加到附近最近的环境当中,未用var声明的为全局变量
  2)查询标识符
  搜索过程,如果在局部环境中找到了该标识符,搜索停止,变量就绪,如果 局部变量中没有找到,沿作用域继续寻找,一直追溯到全局环境的变量对 象,如果   全局变量尚没有找到,则意味着此变量尚未声明
三,垃圾收集
1,标记清除
  变量进入环境时被标记进入环境,离开时被标记离开环境
2,引用计数
  跟踪记录每个值被引用的次数,释放引用次数为0的值所占的内存
  循环引用的时候会出现问题
3,性能问题
4,管理内存
  一旦数据不在使用,将其设置为null,解除引用

js的变量,作用域,内存的更多相关文章

  1. js的变量作用域

    js不支持块级变量作用域,而是包含它们的函数的作用域, 例如: function query() { ; ; i < ; i++) { var b = i; } return b + a; } ...

  2. js学习--变量作用域和作用域链

    作为一名菜鸟的我,每天学点的感觉还是不错的.今天学习闭包的过程中看到作用域与作用域链这两个概念,我觉得作为一名有追求的小白,有必要详细了解下. 变量的作用域 就js变量而言,有全局变量和局部变量.这里 ...

  3. js的变量作用域 ,变量提升

    (function(){ a = 5; alert(window.a); var a = 10; alert(a); })(); 结果: undefined 10 代码等同于下面 var a = un ...

  4. 《JavaScript 高级程序设计》读书笔记四 变量 作用域 内存

    一   变量(基本类型和引用类型) a.基本类型保存值,保存在栈内存,引用类型保存指针,保存在堆内存: b.所有函数的参数都是按值进行传递的,不管参数是何种类型: c.检测类型 typeof     ...

  5. #9.6课堂JS总结#变量作用域 date()对象 math()对象

    一.变量的作用域 1.JavaScript的作用域链 首先看下下面这段代码: <script type="text/javascript"> var rain = 1; ...

  6. js声明变量作用域会提前

    var s = 1; function test() { console.info(s); var s = 2; console.info(s); } test(); >>>unde ...

  7. javaScript的闭包 js变量作用域

    js的闭包 js的变量作用域: var a=90; //定义一个全局变量 function test(){ a=123; //使用外层的 a变量 } test(); document.write(&q ...

  8. 解释JS变量作用域的范例

    JS的变量作用域只有两种:全局作用域与函数作用域. 用var声明的变量不能简单的说是属于函数作用域,应该是说属于其最近的作用域. var a = 10; function test(){ var a; ...

  9. 有关js的变量、作用域和内存问题

    来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(四) js共有5种基本数据类型:Undefined.NULL.Boolean.Numbe ...

  10. js 变量 作用域及内存

    由于Javascript是松散型的,所以其变量只是在特定时间用于保存特定值的一个名字而已,并不存在某个变量必须保存某种类型的值的规则,变量的值以及其数据类型都可以在脚本的声明周期内改变 一.基本类型与 ...

随机推荐

  1. 微服务网关2-搭建Gateway服务

    一.创建父模块infrastructure 1.创建模块 在guli_parent下创建普通maven模块 Artifact:infrastructure 2.删除src目录 二.创建模块api_ga ...

  2. 前端知识(一)06 element-ui-谷粒学院

    目录 一.element-ui 二.element-ui实例 1.引入脚本库 2.引入css 3.引入js 4.渲染讲师列表 5.浏览器中运行 一.element-ui element-ui 是饿了么 ...

  3. 消息队列之rabbitmq学习使用

    消息队列之rabbitmq学习使用 1.RabbitMQ简介 1.1.什么是RabbitMQ? RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,Rabb ...

  4. Vue项目之实现登录功能的表单验证!

    Vue项目之实现登录功能的表单验证! 步骤: 配置 Form表单验证; 1.必须给el-from组件绑定model 为表单数据对象 2 给需要验证的表单项 el-form-item 绑定 prop 属 ...

  5. Android N selectQualifiedNetwork分析

    前言: 参考:Android N wifi auto connect流程分析 后续 Android 8.0/9.0 wifi 自动连接评分机制 分析 前面说了,handleScanResults会去调 ...

  6. jQuery 勾选启用输入框

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Service Locator Pattern 服务定位

    https://www.geeksforgeeks.org/service-locator-pattern/ Service Locator Pattern Last Updated: 06-03-2 ...

  8. 关于js中each()使用return不能终止循环

    Jquery的each里面用return false代替break:return ture代替continue $(xx).each(function() { if(xx){ return false ...

  9. Centos7 安装RabbitMQ 3.6.1

    如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Centos7,为了保证对linux不太熟悉的伙伴也能轻松上手(避免折在安装的路上),下面是 ...

  10. Java编程工具IDEA的使用

    IDEA psvm + Enter 快速构建main方法 sout + Enter 快速打印与句 Ctrl+Shift + Enter,语句完成 Ctrl+F12,可以显示当前文件的结构 Ctrl + ...