javascript小白学习指南3
第二章 变量和作用域
本章主要内容
- 基本类型和引用类型
- 执行环境
- 垃圾回收(了解即可)
基本类型和引用类型
var csdn = new Object();
csdn.blog = "Tomihaohao";
alert(csdn.blog) // Tomihaohaovar name ="csdn";
name.age = 123;
alert(name.age) //undefined//同样的一段方式的代码为什么 结果不一样呢?
在JS中只能给引用类型的值添加动态的属性
var a =1;
var b = a;
alert(b);
//-------------------------------------
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "csdn";
alert(obj2.name) //"csdn"//知道上面两段代码在解析器里发生什么了吗?
两张图帮你解释清楚
function addnum(param){num +=10;return num;
}var a = 10;
var b = addnum(a);
alert(a); //10
alert(b); //20//看 他们两个是互不影响的
有人可能会疑问 拿要是引用类型还是这样吗?
function setObj(obj){obj.name = "csdn";obj = new Object();obj.name = "Tomihaohao"
}var T = new Object();
setObj(T);
alert(T.name);
//是什么呢? 没错依然是csdn
//实际上这个局部对象,在函数执行完后就被kill了
新的工具 instanceof
var person = []alert(person instanceof Array)
//person 是 Array对象吗? 当然是!
执行环境和作用域
- 执行环境定义了变量和函数有权访问的其他数据,决定了它们各自的行为
- 每个执行环境都有一个与之关联的 变量对象
- 在浏览器中 window 对象是全局执行环境,它们只有在应用退出时才能销毁
- 每个函数都有自己的执行环境
- 代码在一个环境执行时,会创建对象变量的一个作用域
- 标识符解析是沿着作用域一级一级的搜索标识符的过程
var color = "white";
function changeColor(){var anotherColor = "red";function swapColors(){var tempColor = anotherColor;anotherColor = color;color = tempColor;//这里可以访问 color anotherColor tempColor
}swaoColors();
//这里可以访问color anotherColor}changeColor();
//只能访问到color
上面的代码一共有三个执行环境,分别是全局环境 changeColor() 局部环境 swapColors() 局部环境,全局环境中有一个变量 color 而在 changeColor()中 有 anotherColor这个变量和 swapColors()这个函数,在swapColors()中有一个tempColor,至于为什么有的地方访问不到呢?
for(var i =0 ;i<10;i++)
{console.log(i);
}
alert(i); //i=10
如果是JAVA 那么变量i会被立即销毁,但在JS中呢!依然存在
var color ="blue";function getColor(){//var volor ="red";return color;
}
alert(getColor()) //blue//如果去掉 getColor()中的注释 那么返回的就是red
没错,在js中 标识符会沿着作用域逐级的网上搜索,直到找到为止
浏览器中的GC 垃圾回收
//向这样var a ="csdn ";//没用啦a = null
//解除引用
总结
- 从一个变量复制到另一个变量的 具体过程,会创建这个值的副本
- 引用类型的值是对象,保存在堆内存中
- 引用类型值的变量其实是一个指针
- 引用类型的复制实质上是复制了一个指针他们同时指向同一个对象
- 学习了新的工具instanceof
- 学习了作用域链
- 了解了GC
javascript小白学习指南3相关推荐
- javascript立体学习指南
javascript立体学习指南 第一章:首先了解javascript 首先,什么是javascript? JavaStrip出生于1995年,是一种文本脚本语言,成都装修公司是一种动态的.弱类型的. ...
- JavaScript入门学习指南
一.初始JavaScript JavaScript运行在客户端 脚本语言:不需要编译逐行进行解释学习 作用: 表单验证 网页特效 服务端开发 桌面程序 APP 物联网-控制硬件 游戏开发 浏览器执行J ...
- Vue 零基础小白学习指南(附教程)
Vue 框架 什么是框架 框架指一套非常优秀可被反复使用的代码.(软件半成品) 框架优势 (1) 提高了代码的复用率 (2) 降低模块之间的耦合度(学子商城 耦合度高(密)) (3) 提高开发速度 ( ...
- Java小白学习指南【day54】---luceneElasticSearch全文搜索
文章目录 lucene&ES全文搜索 一.认识全文搜索引擎 1.什么是全文搜索 2.全文检索的特点 3.常见的全文索引 二.Lucene介绍 1.Lucene是什么 2.Lucene的核心 3 ...
- 最棒的 JavaScript 学习指南
在过去的一年间(2017年),我们对比了近24000篇 JavaScript 文章,并从中挑选出了最好的55篇.我们做了这个目录,认为阅读有经验的程序员写的文章是一个很好的学习方式.在学习了一两门课程 ...
- python从零开始到精通_「Python 入门学习指南」0基础小白助你从入门到精通!
Python比较简单,非常适合初学者入门,内置了各种库,还有丰富的大约13万第三方库,掌握了语法和编程思维后,可以直接使用这些库做出自己的产品.这篇 Python 入门学习指南,针对没有任何编程经验. ...
- 一份小白前端可视化学习指南——附思维导图
一份小白前端可视化学习指南--附思维导图 前言 因为群里粉丝一直要求我写一篇「可视化入门指南」,今天他来了.其实说起前端可视化,大家所能想到的就是各种图表,大屏.这种看着贼炫酷,而笔者呢工作也一直从事 ...
- 前端小白学习路线及知识点汇总(三)-- JavaScript基础
前端小白学习路线及知识点汇总(三)-- JavaScript基础 一. JavaScript的组成 ECMAScript:由ECMA国际进行标准化的一门编程语言,往往被称为JavaScript或Jsc ...
- 零基础小白java培训学习指南
java程序猿在互联网行业一直都被大家认为是高薪的职业,很多人都想要学习java技术,不管是通过自学还是报班学习,都需要有学习计划的, 下面小编就为大家分享一下零基础小白java培训学习指南,希望可以 ...
- 菜鸟网html dom对象,JavaScript学习指南
1.1 JavaScript基础概念: JavaScript (ECMAScript) :JavaScript 是脚本语言.JavaScript和ECMAScript通常被人用来表达相同的含义,但是J ...
最新文章
- 经典:盘点80后男人找老婆的20条标准
- 网页分析利器:IEDevToolBar
- 2020世界机器人大赛总决赛完美闭幕,MakeX挑战赛连续5年成为WRC官方合作赛项
- 刷脸取件遭小学生破解,丰巢智能柜紧急下线相关功能
- unity editor下选中GameObject粘贴复制pos信息
- IOS Core Image之二
- ​ArduinoYun教程之ArduinoYun硬件介绍
- mall-swarm是一套微服务商城系统
- Vue+elementUI时间选择器的应用
- 没有修改出现mysql密码错误_MySql 修改密码后的错误快速解决方法
- 高性能Web动画和渲染原理系列(5)合成层的生成条件和陷阱
- php +html5 websocket 聊天室
- 电子书格式,ePub将是趋势
- 文本框焦点清空以及回车键提交表单的实现
- 第二个冲刺周期第一天
- PSPNet :语义分割
- 关于Landsat所有知识都在这里
- 12 如何分析kernel panic?
- 【AD】破解WindowsServer2008R2 AD域控目录还原模式密
- javascript运行机制
热门文章
- 计算机组成原理第六版课后答案第五章答案,第五章 计算机组成原理习题答案6.doc...
- 优课计算机考试,新生入学安全教育考试之优课操作流程
- java毕业设计鉴赏_高校科研管理系统
- 蚂蚁金服 ant design 下载axure 组件库
- python实验总结与分析_Python程序设计实验一报告
- ngrok小米球的使用
- DCEP | 农行将上线数字人民币刷脸支付
- 端口和波特率测试软件,端口和波特率检测工具
- 无人机——凤凰模拟器篇(五)遥控器的配置教程
- Oracle学习方法