JS:我应该在点击(或等效)事件中设置一个var/let吗?
JS: Should I set a var/let in a click (or equivalent) event?
想知道什么以及为什么是正确的?
我问是因为我永远不确定什么时候使用什么。
这:
function foo(){
$('.bar')
.click(function(){
var baq = 'baz';
})
}
或者这个
function foo(){
var baq;
$('.bar')
.click(function(){
baq = 'baz';
})
}
还有这个:
function foo(){
$('.bar')
.click(function(){
let baq = 'baz';
})
}
或者这个
function foo(){
let baq;
$('.bar')
.click(function(){
baq = 'baz';
})
}
回答前两段代码。
假设您单击一个类名为 bar
的项目,当您执行此操作时,您希望将baq
设置为 baz 的值,仅此而已。您并不真正关心点击发生后的变量baq
。此处,变量在其范围内是局部的。
function foo(){
$('.bar')
.click(function(){
var baq = 'baz';
})}
现在,也许您担心可变 baq。假设您正在制作披萨?Baq
首先是一个字符串变量" "
。
在第一个功能中,你添加奶酪,有些人可能不会。所以我说baq="Cheese"
.在下一个选择中,假设有一个类"vegetables"
。当有人点击蔬菜时,我会添加蔬菜, baq=baq+"mushrooms"
.接下来,有一个类"meat"
。同样,依此类推。
本质上,当我想重用baq
时,我使用以下变量,其中变量global
在其作用域中。点击奶酪和蘑菇吉斯菲德尔
function foo(){
var baq;
$('.bar')
.click(function(){
baq = 'baz';
})}
有关let
使用的信息,请查看此链接
这取决于!!
场景 1:根据事件更改变量
function foo(){
var baq;// to avoid scope conflicts
baq = 0;
$('.bar')
.click(function(){
baq++;//increment baq with click event
})
}
场景 2:处理上下文
function foo(){
var baq;// to avoid scope conflicts
baq = $(this);
$('.bar')
.click(function(){
baq = $(this);
})
}
我无法想象所有的情况,但是YouTube上有一个关于这个的好视频。视频
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 在数组中的一个元素上设置多个值
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 一个页面上有多个Ace编辑器,没有预先设置元素
- 可以't将sessionStorage设置为Javascript中的一个变量
- 为两个ID设置一个变量的正确语法
- 使用D3.js和GeoJson在地图上的某些坐标上设置一个小图像
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- 当张贴到数据库时,I'我得到了一个“;可以't在它们被发送错误之后设置报头”;
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- 使用 JavaScript 一次为一个元素设置多个属性
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- JQuery在设置另一个值之前将附加值设置为null
- 从另一个设置引导日期时间选择器的 minDate
- jQuery插件开发执行一个设置,这是一个函数
- 读取一个设置文件并在node.js中计算
- 保持重新加载页面,直到一个设置文本出现(对于greasekit)
- 我可以在Uploadifive中添加一个设置,让图片按顺序上传吗?
- 将字符的颜色从一个设置为另一个