javascript變量,做用域和內存問題

1:ECMAScript全部函數的參數都是按值傳遞的javascript

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

"finn"chrome

2:檢測什麼對象是什麼類型的對象函數

function test(){};test instanceof Function
true測試

3:執行環境和做用域鏈,沒有塊級做用域url

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測試)ip

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

5:y也能夠釋放(chrome測試)it

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對象;解除引用的真正做用是讓值脫離執行環境

相關文章
相關標籤/搜索