对象属性是否在Javascript中提升?

对象属性是否在Javascript中提升?,javascript,Javascript,JavaScript是否提升对象属性(请参见下面的用例) (环顾四周,我看到变量也被提升——对象属性只是变量提升的一个特例吗?) 答案是否,不挂起对象属性指定。这只是一个简单的赋值表达式 您发布的代码不会遇到任何错误,因为对未定义属性的引用只是一个值为undefined的表达式。因此,.each()循环要求jQuery建立一个事件处理程序,但将其传递给未定义的,这将不执行任何操作,或者可能触发目标元素上的“单击”事件。答案是否,对象属性分配不会被提升。这只是一个简单的赋值表达式 您发布的代码不会

JavaScript是否提升对象属性(请参见下面的用例)

(环顾四周,我看到变量也被提升——对象属性只是变量提升的一个特例吗?)


答案是否,不挂起对象属性指定。这只是一个简单的赋值表达式


您发布的代码不会遇到任何错误,因为对未定义属性的引用只是一个值为
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!");
};