Javascript 简单变量赋值不起作用
在我看来,我有一个简单的变量赋值不起作用 此代码位于jQuery中,有关上下文,请参见 我打电话:Javascript 简单变量赋值不起作用,javascript,jquery,Javascript,Jquery,在我看来,我有一个简单的变量赋值不起作用 此代码位于jQuery中,有关上下文,请参见 我打电话: $('#foo').on('someEvent', eventHandlerFn); 我在jQueryon函数中得到了这个问题。以下是起点: 从代码下方的控制台可以看到,selector设置为myeventHandlerFn,而fn变量未定义。这是意料之中的 在第3509行,选择器的值被分配到fn。因此,fn的值应与选择器的值相同,否 请参见下文-选择器已按预期定义,但fn仍未定义。为什么?
$('#foo').on('someEvent', eventHandlerFn);
我在jQueryon
函数中得到了这个问题。以下是起点:
从代码下方的控制台可以看到,selector
设置为myeventHandlerFn
,而fn
变量未定义。这是意料之中的
在第3509行,选择器
的值被分配到fn
。因此,fn
的值应与选择器的值相同,否
请参见下文-选择器
已按预期定义,但fn
仍未定义。为什么?
最终结果是我的事件处理程序从未注册。我看不出有任何问题。请随意编辑JSFIDLE,使其看起来更像您的代码
你能试着输入console.log(fn)吗代码>在第3510行之后并重新运行?也许这只是调试器的问题?我看不出这有什么问题。请随意编辑JSFIDLE,使其看起来更像您的代码
你能试着输入console.log(fn)吗代码>在第3510行之后并重新运行?也许这只是调试器的问题?代码运行良好,如以下两个屏幕所示(问题在于chrome如何设置控制台的上下文)
看起来console在定义时可以访问变量(在本例中是传递的参数),而不是在运行代码时访问活动值
互换前
互换后
代码运行良好,如以下两个屏幕所示(问题在于chrome如何设置控制台的上下文)
看起来console在定义时可以访问变量(在本例中是传递的参数),而不是在运行代码时访问活动值
互换前
互换后
这似乎是Chrome中调试器的一个问题——要么是实质性问题,要么只是调试器的细微差别,我不理解。fn在调用结束时确实有一个值,但不是断点所在的位置。这似乎是Chrome中调试器的一个问题-要么是实质性问题,要么只是调试器的细微差别,我不理解。fn在调用结束时有一个值,但在断点所在的位置没有值。将eventHandlerFn
变量作为参数传递。。这是什么?请在问题中发布您的代码。eventHanderFn只是一个调用警报的fn。您可以在控制台中看到它是什么-它被分配给“selector”变量。使用这样一个简单的事件处理程序,您会认为只要您传递了一个实际声明并在作用域内的函数,就很难出错?当您在X行上设置断点并且调试器在该点停止时,第X行尚未运行。它在X线运行之前停止。如果要在第X行之后查看结果,请将断点设置为第X+1行。因此,预计尚未分配fn
。您将eventHandlerFn
变量作为参数传递。。这是什么?请在问题中发布您的代码。eventHanderFn只是一个调用警报的fn。您可以在控制台中看到它是什么-它被分配给“selector”变量。使用这样一个简单的事件处理程序,您会认为只要您传递了一个实际声明并在作用域内的函数,就很难出错?当您在X行上设置断点并且调试器在该点停止时,第X行尚未运行。它在X线运行之前停止。如果要在第X行之后查看结果,请将断点设置为第X+1行。因此,预计尚未分配fn
。谢谢Gaby,尽管没有看到这一点。我使用了下面链接的小提琴,在通过第41行之后,fn仍然没有定义,但选择器没有定义(参见下面链接的图片)。很奇怪。还有@RoyTruelove什么chrome版本?我是最新的:32.0.1700.76 mThanks Gaby,但没看到这个。我使用了下面链接的小提琴,在通过第41行之后,fn仍然没有定义,但选择器没有定义(参见下面链接的图片)。很奇怪。还有@RoyTruelove什么chrome版本?我在用最新版本:32.0.1700.76 mThanks for the fiddle。即使使用这个提琴,我也能够复制这个问题-请参见我在Gaby的回答下的评论。@RoyTruelove这确实很奇怪,我使用的是JSFIDLE,并且在第41行设置了一个断点,fn已定义。您的屏幕截图中有什么错误(右上角的小x-可能不相关)。这是我的截图-谢谢你的提琴。即使使用这个提琴,我也能够复制这个问题-请参见我在Gaby的回答下的评论。@RoyTruelove这确实很奇怪,我使用的是JSFIDLE,并且在第41行设置了一个断点,fn已定义。您的屏幕截图中有什么错误(右上角的小x-可能不相关)。这是我的截图-