码迷,mamicode.com
首页 > 编程语言 > 详细

javascript变量,作用域和内存问题

时间:2015-03-07 22:34:59      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

1:ECMAScript所有函数的参数都是按值传递的

function setName(obj)
{
obj.name="finn";
obj=new Object();
obj.name="fiona";
}
var person=new Object();
setName(person);
person.name;

"finn"

2:检测什么对象是什么类型的对象

function test(){};test instanceof Function
true

3:执行环境和作用域链,没有块级作用域

try
{
var color="blue";
function changeColor()
{
var anathorColor="red";
var finn="green";
changeColor.fiona="ddd";
function swapColors()
{
// var tempColor=anathorColor;
// anathorColor=color;
// color=tempColor;
var test=1;
with(changeColor)
{
try
{
var url=test+fiona+href;
}
catch(e)
{
var jjj=e;
throw e;
}
}
}
swapColors();
}
changeColor();
}
catch(x)
{
var d=x;
}

4:y可以及时释放(chrome测试)

function a()
{
var x=1;
var y="111111";
return function()
{
console.log(x);
}
}
var b=a();
b();

5:y也可以释放(chrome测试)

function a()
{
var x=1;
var y="111111";
setTimeout(function xxx()
{
console.log(x);
},1000);
};
a();

6:垃圾收集(标记清除和引用计数),引用计数缺陷:循环引用问题;IE中有一部分对象并不是原生的javascript对象,例如:BOM和DOM中的对象就是使用C++以COM对象的形式实现的。IE9把BOM和DOM对象都转换成了真正的javascript对象;解除引用的真正作用是让值脱离执行环境

javascript变量,作用域和内存问题

标签:

原文地址:http://www.cnblogs.com/syf/p/4320933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!