文章出處
文章列表
傳遞參數
function setName(obj){ obj.name="Nicholas"; obj=new object(); obj.name="Greg"; } var person=new Object(); setName(person); alert(person.name); //"Nicholas"
在函數體內重新new一個Object,并將它賦值為"Greg",但在函數外部訪問name屬性時,其值仍為"Nicholas".實際上,當函數內部重寫obj時,這個變量引用的就是一個局部對象了。
而這個局部對象會在函數執行完畢后立即銷毀。
檢測類型
如果變量的值是一個對象或null,則typeof操作符會像下面例子中所示的那樣返回"object";
var n=null; var o=new object(); alert(typeof n); //object alert(typeof o); //object
延長作用域鏈
當執行流進入下列任何一個語句時,作用域鏈就會得到加長:
try-catch 語句的catch塊
with語句
function buildUrl(){ var qs="?debug=true"; with(location){ var url=href+gs; } return url; }
在此,with語句接收的是location對象,因此其變量對象中就包含了location對象的所有屬性和方法。
沒有塊級作用域
if(true){ var color="blue"; } alert(color);
如果是在C,C++或是JAVA中,color會在if語句執行完畢后被銷毀,但在javascript中,if語句的變量聲明會將變量添加到當前的執行環境。在使用for語句時尤其要牢記這一差異,如:
for(int i=0;i<10;i++){ doSomething(); } alert(i); //10
文章列表
全站熱搜