JavaScript/jQuery变量作用域咨询:全局变量赋值后作用范围疑问
关于JavaScript变量parentLI和parentdiv的作用域解析
嘿,我来帮你理清这两个变量的作用域问题,咱们一个个拆解:
1. parentLI的作用域:全局可访问
你在所有函数外部声明了var parentLI;,这就把它定义成了全局变量。它可不是只能在你说的“函数1”里生效——只要是在同一个全局作用域下的其他函数,都能访问到它的值。
不过有个小细节要注意:只有当用户点击.addmorebrands元素时,parentLI = $(this).closest('li');这行代码才会执行,给它赋值;在这之前,parentLI的初始值是undefined。
2. parentdiv的作用域:不是函数局部变量,是隐式全局变量
你在图片的点击回调里直接写了parentdiv = $(this).closest('div.outerdiv');,这里没有用var、let或const声明变量。这种写法会让parentdiv变成隐式全局变量——它不属于函数1的局部作用域,反而会被挂载到全局的window对象上,整个页面的代码都能访问到它。
这种写法其实很容易踩坑,比如如果其他地方也有同名变量,就会造成变量污染,出现难以排查的bug。建议改成用let(如果后续需要修改它)或者const(如果赋值后不需要修改)声明,把它限定在回调函数的局部作用域里:
// 推荐写法,限定在局部作用域 let parentdiv = $(this).closest('div.outerdiv');
内容的提问来源于stack exchange,提问作者NewBie
相关产品推荐
相关产品推荐

