变量作用域- jQuery/JavaScript
Variable Scope - jQuery/JavaScript
我在jQuery/JavaScript的变量范围有点麻烦。我将给出一个代码示例来演示我的问题,因为这可能比试图用文字解释更容易理解。
var example_1 = function() {
row = 10;
}
var example_2 = function() {
something.click(function(){
var something_3 = function() {
alert(row);
}
something_3();
}
}
问题是,行变量不能在something_3函数内访问。我在example_2函数中访问了example_1函数中的其他变量,但是当放入something_3函数时,它不再工作。谢谢你的帮助!
编辑:添加了额外的代码来显示什么是有效的,什么是无效的。行是在Build函数中定义的,板和矿也是如此。棋盘和地雷可以进入,但行不能。var build = function(row) {
row = typeof row !== 'undefined' ? row : 5;
board = $('.container');
mines = [1,2,3,4];
}
build();
var start = function() {
var tile = $('.container div');
tile.click(function() {
var this_index = $(this).index();
var has_mine = $.inArray(this_index, mines);
var scan = function() {
alert(row);
}
if (has_mine > -1) {
add_alert("Has mine, you're dead!");
} else {
scan();
$(this).html('Clear!');
}
});
var add_alert = function(msg) {
board.append("<span class='alert'>" + msg + "</span>")
$('body').append("<div class='blackout'></div>");
}
}
start();
var build = function(row) {
row = typeof row !== 'undefined' ? row : 5;
//[...]
}
row
没有被定义为变量,而是一个参数。这样,它就不会作为全局变量泄露。
只要改变参数的名字就可以了:
var build = function(rowValue) {
row = typeof rowValue !== 'undefined' ? rowValue: 5;
//[...]
}
然而,你不应该使用隐式全局变量。全局变量已经够糟糕的了。
选项一,声明变量:var row, board, mines;
var build = function(rowValue) {
row = typeof rowValue !== 'undefined' ? rowValue : 5;
board = $('.container');
mines = [1,2,3,4];
}
选项二,使用全局标识符:
var build = function(row) {
window.row = typeof row !== 'undefined' ? row : 5;
window.board = $('.container');
window.mines = [1,2,3,4];
}
多重问题:
- 如果你没有在函数的变量前面指定var,它就会变成一个全局变量
- row没有被初始化,因为你没有调用example_1();然而, 在一个无关的注释中,不要忘记在匿名函数的末尾使用分号,因为它可能被解释为自执行函数。
编辑2:
var build = function(row) {};
好的,所以你的问题是行变量是一个参数,所以不再是一个全局变量了。如果您删除传递给构建方法的行参数/更新变量名称,它将工作。
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- Javascript(jQuery)给了我奇怪的结果
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript/jQuery中的并行Ajax调用
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- Javascript/Jquery/PHP加载页面-如何
- Javascript/Jquery Blob not showing Chrome PDF
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- OnClick/Onhover Javascript/jquery
- 如何从javascript/jquery中的复选框中获取布尔值
- javascript/jquery将utc转换为短格式的本地时间
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何向这个javascript/jquery函数添加参数
- 用JavaScript/jQuery点击图片,选中多个方框
- 使用Javascript/JQuery获取JSON GET数据
- 从数组中删除元素的最佳方法是:javascript/jquery
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 用DRY方式Javascript/JQuery动态替换HTML
- 类似Javascript JQuery的库
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值