这是我程序中的两个函数。
函数1:
var parentLI; //Global variable so can be accessed in both functions
$(document).on("click", ".addmorebrands", function() {
parentLI = $(this).closest('li'); //Will the value of parentLI local to function 1 only ?
$('#exampleModalCenter').modal('show');
$('#exampleModalCenter img').click(function() {
parentdiv = $(this).closest('div.outerdiv'); //Varbiale local to function 1
parentdiv.addClass('preselect');
parentdiv.siblings().removeClass('preselect');
selectedImageSRC = $(this).attr('src'); //Varbiale local to function 1
})
});
函数2:
$('#add-image').click(function(){
parentLI.append('<div class="imagewrap"><img class="images" src="'+selectedImageSRC+'" title="Manual Addition"> <input type="button" class="removediv" value="X" /></div>');
var imageNameValue = parentLI.children('.imagenames').val();
var imageTitleValue = parentLI.children('.hoverinformation').val();
$('#exampleModalCenter').modal('hide');
parentdiv.removeClass('preselect'); //How am I able to access parentdiv which is local to function 1
});
我对变量范围有疑问
parentdiv
定义于Function1
并将位于Function1
本地。我如何才能在Function2
中访问它selectedImageSRC
定义于Function1
并将位于Function1
本地。我如何才能在Function2
中访问它在线parentLI.append('<div class="imagewrap"><img class="images" src="'+selectedImageSRC+'" title="Manual Addition"> <input type="button" class="removediv" value="X" /></div>');
- 变量
parentLI
在两个函数之外声明,因此它将是全局的。但它的 value($(this).closest('li');) 在Function1
中分配给它.如何在Function2
中访问 value($(this).closest('li');)
最佳答案
当您在不使用 var
、let
或 const
关键字的情况下定义变量时,它会在全局命名空间(也称为 >窗口
)。与 PHP 不同的是,全局命名空间中的变量在函数内部自动可用。这就是为什么 parentdiv
和其他变量在第二个函数中可见。
function test() {
variable1 = 'foo';
var variable2 = 'bar';
}
test();
console.log(typeof variable1); // 'string'
console.log(typeof variable2); // 'undefined'
关于第三个问题,变量在任何地方都有相同的值。您在公共(public)命名空间中定义了变量,因此两个函数都会看到相同的变量,该变量是全局定义的,而不是本地定义的。
关于javascript - Javascript/jquery 中变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572058/