如何改变这个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;
});
});
相关文章:
- 没有通过ajax调用设置Javascript全局变量
- Javascript全局变量简单解决方案
- 用作标志的Javascript全局变量
- Javascript全局变量问题
- 函数内部的JavaScript全局变量定义
- Selenium Web驱动程序访问Jquery中的Javascript全局变量
- Javascript全局变量在mouseup上总是未定义的
- Javascript全局变量存储在哪个对象中
- nodejs中的Javascript全局变量和属性-全局属性有时会被删除
- Javascript:全局变量转到“窗口”或“全局”,但全局函数不会.全球 FN 去哪儿了
- JavaScript 全局变量声明
- 与javascript全局变量范围和更新混淆
- 通过 Excel VBA 引用 Acrobat Javascript 全局变量所需的语法是什么?
- Javascript - 全局变量和全局范围内的变量是否不同(在 jsfiddle 中)
- Javascript 全局变量命名冲突
- Javascript:全局变量=坏
- Javascript 全局变量在回调函数之外不会保持不变
- javascript 全局变量不能存储值,如果它意味着从 HTML 元素中提取它们
- 创建/访问在 AJAX 调用中创建的 Javascript 全局变量
- 拼接上的Javascript全局变量作用域/覆盖