对象属性是否在Javascript中提升?
JavaScript是否提升对象属性(请参见下面的用例) (环顾四周,我看到变量也被提升——对象属性只是变量提升的一个特例吗?)对象属性是否在Javascript中提升?,javascript,Javascript,JavaScript是否提升对象属性(请参见下面的用例) (环顾四周,我看到变量也被提升——对象属性只是变量提升的一个特例吗?) 答案是否,不挂起对象属性指定。这只是一个简单的赋值表达式 您发布的代码不会遇到任何错误,因为对未定义属性的引用只是一个值为undefined的表达式。因此,.each()循环要求jQuery建立一个事件处理程序,但将其传递给未定义的,这将不执行任何操作,或者可能触发目标元素上的“单击”事件。答案是否,对象属性分配不会被提升。这只是一个简单的赋值表达式 您发布的代码不会
答案是否,不挂起对象属性指定。这只是一个简单的赋值表达式
您发布的代码不会遇到任何错误,因为对未定义属性的引用只是一个值为
undefined
的表达式。因此,.each()
循环要求jQuery建立一个事件处理程序,但将其传递给未定义的,这将不执行任何操作,或者可能触发目标元素上的“单击”事件。答案是否,对象属性分配不会被提升。这只是一个简单的赋值表达式
您发布的代码不会遇到任何错误,因为对未定义属性的引用只是一个值为undefined
的表达式。因此,.each()
循环要求jQuery建立一个事件处理程序,但传递给它的是undefined
,它要么什么也不做,要么可能在目标元素上触发一个“click”事件。如果页面有一个id为“hey”的元素,它将不起作用。它之所以“有效”,是因为jQuery.each()
循环没有运行。.each()
循环下面的对象属性分配肯定没有被提升。@Tushar很好的观点-即使有一个“hey”元素,该代码在中。each()
回调也不会做任何事情,对obj.hey
的引用将只是未定义的。抱歉,我的意思是.hey
不是#hey
-$(obj)
从每个选定对象创建一个新的jQuery元素。是的,我的初始注释不正确。回调将运行,但实际上不会产生任何结果,因为此时obj.hey
是undefined
。(关于未被提升的赋值的注释是正确的。)还要注意,当使用let
时,有一个错误,在代码中obj
是元素,因为您在中为每个中的参数使用相同的变量名,如果页面有id为“hey”的元素,则该错误将不起作用。它之所以“有效”,是因为jQuery.each()
循环没有运行。.each()
循环下面的对象属性分配肯定没有被提升。@Tushar很好的观点-即使有一个“hey”元素,该代码在中。each()
回调也不会做任何事情,对obj.hey
的引用将只是未定义的。抱歉,我的意思是.hey
不是#hey
-$(obj)
从每个选定对象创建一个新的jQuery元素。是的,我的初始注释不正确。回调将运行,但实际上不会产生任何结果,因为此时obj.hey
是undefined
。(关于未被提升的赋值的注释是正确的。)还请注意,在使用let
时有一个值,在代码obj
中是元素,因为每个中的参数都使用相同的变量名
let obj = {};
$(".hey").each((i, obj) => {
$(obj).click(obj.hey);
});
obj.hey = () => {
$("#hey").html("Hey!");
};