Javascript-调用函数
它按预期工作。i、 例如,当我单击复选框时,警报将显示其idJavascript-调用函数,javascript,Javascript,它按预期工作。i、 例如,当我单击复选框时,警报将显示其id c1.onclick = function () { alert(this.id); }; 但是如果我这样调用函数 c1.onclick = function () { alert(this.id); }; 当我单击“添加”按钮(在调用addfunction()时)时,会出现此警报。为什么?因为您正在执行dep()并将返回值分配给c1。单击 c1.onclick = function () { alert(this.id); };
c1.onclick = function () { alert(this.id); };
但是如果我这样调用函数
c1.onclick = function () { alert(this.id); };
当我单击“添加”按钮(在调用addfunction()时)时,会出现此警报。为什么?因为您正在执行dep()
并将返回值分配给c1。单击
c1.onclick = function () { alert(this.id); };
如果要分配函数本身,请不要调用它:
c1.onclick = function () { alert(this.id); };
原因是
dep()
是一个函数调用表达式。因此,您在这里实际要做的是调用函数dep()
,然后将结果(undefined
)分配给c1.onclick
。您应该执行以下操作:
c1.onclick = function () { alert(this.id); };
c1.onclick = dep;
您不想将调用
dep()
(未定义)的结果分配给onclick。您应该分配函数本身
c1.onclick = function () { alert(this.id); };
function dep() { alert(this.id); }
c1.onclick = dep;
代码
c1.onclick = function () { alert(this.id); };
c1.onclick = dep;
实际上调用了dep。看到括号了吗???。这就是他们所做的,他们实际上执行代码。匿名功能似乎是一条出路。不过要小心这个词。在
c1.onclick = function () { alert(this.id); };
c1.onclick = dep();
如果您“命名”该函数,则可以引用该函数本身。因为您已经提到了c1、c2和c3,所以您可以执行各种解决方案,如:
c1.onclick = function () { alert(this.id); };
c1.onclick = function () { alert(this.id); };
或
c1.onclick = function () { alert(this.id); };
c1.onclick = function () { alert(this.id); };
希望有帮助 您正在传递函数调用的结果而不是对该函数的引用,该函数在异步单击调用事件中需要调用
c1.onclick = function () { alert(this.id); };
所以改变这个
c1.onclick = function () { alert(this.id); };
function click_handler(v_param) {alert(v_param.id);}
c1.onclick=function() {click_handler(c1);}
到
c1.onclick = function () { alert(this.id); };
事实上,他分配的是
未定义的
,而不是空的
@johannellampee。问题与作用域无关问题在于OP调用函数并分配结果,而不是分配结果,与作用域无关哦,我明白了。我只是想指出使用非匿名函数时的范围界定问题,以防您想试用它们。另外,你说的是发货,而不是范围界定,这就是为什么我没有得到它。我不知道为什么我会觉得你是OP…西班牙语不是我的母语,因为你在叫它,而不是把它分配给活动。在上一个示例中,您正在附加函数,但此时不调用。