javascript - Javascript/jquery 中变量的范围

标签 javascript jquery

这是我程序中的两个函数。

函数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

    });

我对变量范围有疑问

  1. parentdiv定义于 Function1并将位于 Function1 本地。我如何才能在 Function2 中访问它
  2. 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>');
  3. 变量 parentLI在两个函数之外声明,因此它将是全局的。但它的 value($(this).closest('li');) 在 Function1 中分配给它.如何在 Function2 中访问 value($(this).closest('li');)

最佳答案

当您在不使用 varletconst 关键字的情况下定义变量时,它会在全局命名空间(也称为 >窗口)。与 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/

相关文章:

javascript - PHP 生成的输出未触发 JS 函数

javascript - 如何在标签和描述中自动完成搜索

javascript - 单击按钮时切换 Bootstrap 按钮文本?

javascript - 如何在成功回调后使用 jquery

javascript - 单击链接 jquery 时更改图像

javascript - jQuery/javascript 包装代码查询

调用派生类函数时的 javascript util.inherits 问题

javascript - Uncaught ReferenceError : require is not defined in Electron BrowserWindow

javascript - GWT - ListBox,如何预览 changeEvent

javascript - 从 aspx 获取变量值并在后面的代码中使用它