- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有时我可以以某些方式使用函数,而无需实际声明必须在函数内部传递参数,这一事实让我有点困惑。
这里有一些例子,我知道它们在解释方式上有所不同,但整体理论对我来说似乎有点奇怪。
所以通常您会通过变量声明传递参数,如下所示:
def usualexample(x):
print x;
return False;
somevarname = usualexample(5);
somevarname;
在本例中将打印出 5 并返回 False。但在某些情况下,就像这个使用 JavaScript 的示例一样,我可以在不传递任何参数的情况下使用该函数,即使程序知道将事件作为参数传递到函数中,而程序员实际上并没有告诉它像下面这样。
var innermost = document.getElementsByTagName("section");
for (var p = 0; p < innermost.length;p++){
innermost[p].onclick = showinfo;
}
function showinfo(event){
Do something with the event argument
}
Python 中使用 pyhook 模块的另一个类似示例是:
import pyHook;
def dosomething(event):
do something with the event argument.
manager = pyHook.HookManager();
manager.KeyDown = dosomething;
在最里面的[p].onclick 和 manager.KeyDown 声明的情况下,它们如何提前知道为函数提供参数?
谁能解释一下这背后的逻辑吗?我知道它们是单独的声明,并具有完全不同的目的,但我只需要知道这些声明如何提前知道为函数提供参数,而无需提前实际指定它们。
最佳答案
执行函数的代码和仅存储函数的引用而不执行它是有区别的。当你编写函数时:
function showinfo(event){
console.log('showinfo executed');
}
没有执行任何操作。您只需定义该函数在执行时应该做什么。您现在可以使用括号立即调用它。
showinfo(3);
这将导致消息显示在控制台中。但是,您也可以传递方法的引用(类似于名称)。所以如果你写:
var innermost = document.getElementsByTagName("section");
innermost[0].onclick = showinfo;
什么也没发生,但浏览器内部知道在发生点击时调用“showinfo”方法。您也可以在自己的代码中执行此操作:
var rememberedFunction;
function rememberFunction(func) {
rememberedFunction = func;
}
function callFunction(value) {
if (rememberedFunction) {
rememberedFunction(value); // This calls the function you saved
}
}
rememberFunction(someinfo); // Nothing is output to the console
// ... much later
callFunction(3); // The message is output to the console here
您可以执行此操作来发布电话 从浏览器事件到处理 ajax 调用和 promise 的各种情况下执行方法。
关于javascript - 某些方法如何知道提前进行论证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740372/
这个问题已经有答案了: What is the purpose of the `self` parameter? Why is it needed? (26 个回答) 已关闭 9 年前。 我已经用 J
R 中 ~. 参数的含义是什么? 例如plot(~.,xyz..) 我已经看到这个论点在各种情况下多次使用,并且由于很难在谷歌上有意义地搜索符号,所以我几乎没有取得成功。 最佳答案 这是一个公式,采用
我是 Python 的新手。我不明白如何/为什么使用 self 参数: class Person: def __init__(self, name): self.name =
我是一名优秀的程序员,十分优秀!