javascript小白学习指南1---0
第二章 变量和作用域
本章主要内容
- 基本类型和引用类型
- 运行环境
- 垃圾回收(了解就可以)
基本类型和引用类型
var csdn = new Object(); csdn.blog = "Tomihaohao"; alert(csdn.blog) // Tomihaohao var 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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。