JavaScript 是否提升对象属性(参见下面的用例)?
(环顾四周,我发现变量也被提升了——对象属性只是变量提升的一个特例吗?)
let obj = {};
$(".hey").each((i, obj) => {
$(obj).click(obj.hey);
});
obj.hey = () => {
$("#hey").html("Hey!");
};
Run Code Online (Sandbox Code Playgroud)
答案是否定的,对象属性分配不会被提升。这只是一个简单的赋值表达式。
您发布的代码不会遇到任何错误,因为对未定义属性的引用只是一个值为 的表达式undefined。因此,.each()循环要求 jQuery 建立一个事件处理程序,但传递它undefined,这将不执行任何操作,或者可能触发目标元素上的“单击”事件。