javascript高级程序设计第四章 变量、作用域和内存问题
变量包含两种,,基本类型和引用类型
基本类型是指一些简单的字段;
引用类型是☞由多个值构成的对象 引用类型的值是保存在内存中的对象,在javascript中是不允许直接访问内存中的位置;
函数的参数是按照值类型进行传递的,函数的参数可以看作是一个局部变量。
检测类型:
typeOf 用来检测基本类型的值用处大,在检测引用类型的值得时候用处不是很大 检测到的Null类型返回结果为Object,
insctanceof 用来检测引用类型的值,当检测的对象是引用类型的值或者Object时返回true用来检测基本类型是返回flase。
执行环境和作用域:
子集找不到的变量会向上进行搜索,子集可以访问父级的变量,父级不能访问子集的变量,在严格模式下未使用var声明的变量会报错;
在javascript中没有块级作用域,没有经过var声明的变量会当做全局变量来处理,但严格模式下会报错;
垃圾回收机制
在javascript中不用程序员之际来管理内存,当一个变量没有被引用时,垃圾回收机制就会将该变量的内存收回,垃圾回收机制采用的是“标记清除”机制,使用“计数”机制会有BUG
当两个变量相互引用时,使用“计数”机制将会使两个变量不能被回收,当一个变量不使用时,最好将该变量复制为Null,这样当回收机制执行时,就会将该变量的内训收回;
javascript高级程序设计第四章 变量、作用域和内存问题的更多相关文章
- 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这 ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- JavaScript高级程序设计学习(四)之引用类型
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...
- 《JavaScript高级程序设计》笔记:变量、作用域和内存问题(四)
基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型的值指那些可能有多个值构成的对象. 动态的属性 var p ...
- js高级程序设计(四)变量、作用域和内存问题
基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是 Undefined . Null . Boolean . Number 和 S ...
- 精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型
变量.作用域和内存问题 执行环境共有两种类型——全局和局部 作用域链会加长,有两种情况:try-catch语句的catch块,with语句. javascript没有块级作用域,即在if,for循环中 ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)
一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可 ...
随机推荐
- Git和Github简单教程(转)
这篇文章只挑一部分命令来讲,差不多够用就行的程度.如果需要其他命令,到时候再去其他地方了解就行了先在Github上写好再搬过来的:本文Github链接 目录: 零.Git是什么 一.Git的主要功能: ...
- 解决OX10.11.4 不能授权的问题
Did apple server have some maintenance? Open your Terminal and put this command sudo mkdir -p /Users ...
- 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法
前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是 ...
- chrome一直提示adobe flash player 因过期而遭阻止
链接:https://www.zhihu.com/question/32223811/answer/128088278 很多新用户在安装了Chrome浏览器或者更新过的的时候,经常提示 adobe f ...
- C#中Object和Json之间的转换
//创建一个类,此类有两个方法 using Newtonsoft.Json;namespace System{ public static class JsonExtension { ...
- golang调用c++文件
简要步骤: 1,将c++ 的方法提取到头文件.h中( ) 2,编译cc(c++)文件为动态链接库so文件 3,将头文件放入include目录 .so放入lib目录 4,go程序中指定 CFLAGS 和 ...
- JMeter学习-033-JMeter BeanShell 脚本应用实例之参数变量修改
BeanShell脚本是JMeter自动化测试过程中不可或缺的提升技能之一,BeanShell脚本编写类似于Java脚本.它可以获取.修改系统定义或用户定义的变量值,同时也可以进行一些相应的测试数据处 ...
- JMeter学习-023-JMeter 命令行(非GUI)模式详解(一)-执行、输出结果及日志、简单分布执行脚本
前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行 ...
- windows下Bat命令学习
一.基础语法:1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改.2.批处理是一种简单的程序,可以用 if 和 goto 来控制 ...
- 阿里云docker镜像加速
echo "DOCKER_OPTS=\"--registry-mirror=https://yeyieqis.mirror.aliyuncs.com\"" | ...