程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> javascript-請教有關JS中變量的問題

javascript-請教有關JS中變量的問題

編輯:編程綜合問答
請教有關JS中變量的問題

舉個栗子:
window.onload=function(){
var a=1;
var b=2;
plus(a,b);
function plus(a,b){
a=a+b;
b=0;
//此時在這個函數內還能調用到父函數中的a=1,b=2嗎?

}

}

最佳回答:


這個問題是兩種不同變量在作為參數傳遞的問題,JS傳遞變量分為兩種一種是基礎變量,傳遞的是變量內容,第二種是引用變量(對象),在函數中傳遞的指向對象的指針,樓主這個函數傳遞的是基礎變量,所以在子作用域中修改了變量,在父作用域中變量並沒有修改,但是你如果將a、b封裝在對象中,將對象作為函數參數傳遞過去,就可以修改父函數的內容了。如下代碼所示。

 window.onload=function(){
var a=1;
var b=2;
plus(a,b);
function plus(a,b){
a=a+b;// 等同於 var a = a+b;此處的a是子作用域新定義的a,那麼子作用域就有兩個名為a的基本變量,按js規則,後面定義的基本變量會覆蓋前者
b=0;//同上
}
}

修改代碼如下:

window.onload=function(){
    var obj = {};
    obj.a = 1;
    obj.b = 2;
    alert(obj.a);
    alert(obj.b);

    plus(obj);
    function plus(obj){
    a = obj.a+obj.b;
    b = 0;
    alert("innerA:"+obj.a);
    alert("innerB:"+obj.b);

    }
    alert("outterA:"+obj.a);
    alert("outterB:"+obj.b);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved