我在想出如何控制程序流而不是在我的网络应用程序中将全局变量与 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>
最佳答案
这将使用 closure 从全局范围中删除所有代码
(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;
});
});
})();
关于javascript - 如何更改此 Javascript 以不使用全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7128946/