簡體   English   中英

如何更改此Javascript以不使用全局變量?

[英]How can change this Javascript to not use global variables?

我在解決如何控制程序流程時遇到了一些麻煩,並且無法在我的Web應用程序中將全局變量與Javascript一起使用。 在此示例中,當get_notes()時,接收到的注釋的id存儲在current_note_ids數組中。 調用add_to_discussion()current_note_ids作為參數發送到服務器請求。 如何在沒有current_note_ids作為全局變量的情況下執行此操作?

<script type="text/javascript">
    var current_note_ids = [];

    function add_to_discussion(){
        $.post('/add_to_discussion',{current_note_ids:current_note_ids});
    }

    function get_notes(){
        $.post('/get_note_combination',{}, function(data) {            
            current_note_ids = []; // clear existing note details
            for (i in data.notes) {
                current_note_ids.push(data.notes[i].guid);
            }
        }
    }

    $(document).ready(function() {

        $('#add_to_discussion_button').click(function(){
            add_to_discussion();
            return false;
        });

        $('#get_notes_link').click(function(){
            get_notes();
            return false;
        });

    });

</script>

這使用閉包從全局范圍中刪除所有這些代碼

(function () {

    var current_note_ids = [];

    function add_to_discussion(){
        $.post('/add_to_discussion',{current_note_ids:current_note_ids});
    }

    function get_notes(){
        $.post('/get_note_combination',{}, function(data) {            
            current_note_ids = []; // clear existing note details
            for (i in data.notes) {
                current_note_ids.push(data.notes[i].guid);
            }
        }
    }

    $(document).ready(function() {

        $('#add_to_discussion_button').click(function(){
            add_to_discussion();
            return false;
        });

        $('#get_notes_link').click(function(){
            get_notes();
            return false;
        });

    });

})();

您可以使用匿名函數使其類似於OO。 在這種情況下,您可以選擇要“曝光”的內容。

var notes = $(function() {
    var current_note_ids = [];

    function add_to_discussion() {
        $.post('/add_to_discussion', {
            current_note_ids: current_note_ids
        });
    }

    function get_notes() {
        $.post('/get_note_combination', {}, function(data) {
            current_note_ids = []; // clear existing note details
            for (i in data.notes) {
                current_note_ids.push(data.notes[i].guid);
            }
        })
    }
    return {
        add_to_discussion: add_to_discussion,
        get_notes: get_notes
    };
})();

$(document).ready(function() {

    $('#add_to_discussion_button').click(function() {
        notes.add_to_discussion();
        return false;
    });

    $('#get_notes_link').click(function() {
        notes.get_notes();
        return false;
    });

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM