執行個體:JavaScript中的方法參數

來源:互聯網
上載者:User

下面的 JavaScript 程式是個方法參數的樣本:

Code
var testCase = {
    changeStr: function(str) {
        str = 'welcome to changeStr function.';
    },
    run: function(str) {
        this.changeStr(str);
        console.log(str);
    }
};
testCase.run('1234');

 

在 changeStr() 方法中的參量是 str 。而在 run() 方法中含有 this.changeStr(str); ,其中的參數 str 在 testCase.run(‘1234’); 執行時為該值(即1234),雖然在changeStr()方法內str被賦了值為'welcome to changeStr function.',但是對run()方法的參數str而言,str的值還是1234。只不過,兩個方法參數都叫str,同名而已。讓人會產生混淆的錯覺。最後是調用的testCase對象中的run()方法,所以,程式執行的結果是'1234’。
那麼,如何通過changeStr()方法來改變run()方法參數str的值呢?接著看下面的代碼:

Code
var testCase = {
    changeStr: function(str) {
        return str = 'welcome to changeStr function.';
    },
    run: function(str) {
        str = this.changeStr(str);
        console.log(str);
    }
};
testCase.run('1234');

str = this.changeStr(str) 將changeStr方法返回的值賦給了str變數,str原來的值 1234 被新的值給引用關聯了,所以結果是 'welcome to changeStr function.'。其實,代碼可這麼寫更清楚明了點:

Code
var testCase = {
    changeStr: function() {
        return str = 'welcome to changeStr function.';
    },
    run: function() {
        str = this.changeStr();
        console.log(str);
    }
};
testCase.run();

那為什麼前面要在changeStr()方法中寫個str參數是做什麼呢?答案是:混淆“扮豬吃老虎”讓你產生錯覺而已了。

方法參數,形式上的而已,而在調用該方法時參數才是真正的值。參數傳到方法內後的值是怎麼處理的在方法的外面不用管,因為該怎麼處理就怎麼處理嘛。而方法內的過程與方法取的名稱是相關的,方法名稱代表著這個方法的含意(means)。話說回來,JavaScript 方法參數是偽對象,同名方法的參數個數不同產生方法重載。但本貼文略過不談,請詳見《精通JavaScript》。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.