Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解码函数(事件){}的JavaScript语法_Javascript_Function_Syntax - Fatal编程技术网

解码函数(事件){}的JavaScript语法

解码函数(事件){}的JavaScript语法,javascript,function,syntax,Javascript,Function,Syntax,我刚刚在网上遇到了一段JavaScript代码: exampleSocket.onopen = function(event) { // rest of code here;} 对于函数(事件)部分,我感到相当困惑,因为没有评论供我分析。(在设计双向双工连接时,谁需要评论?哈哈) 功能(事件)到底是什么?我一直认为必须用javaScript中的函数定义函数名。这是一个坏代码的例子吗?此外,(参数whatever)'event'甚至没有在代码中的任何其他地方定义。就砰。就在那里。是否有必要定义该

我刚刚在网上遇到了一段JavaScript代码:

exampleSocket.onopen = function(event) { // rest of code here;}
对于函数(事件)部分,我感到相当困惑,因为没有评论供我分析。(在设计双向双工连接时,谁需要评论?哈哈)

功能(事件)到底是什么?我一直认为必须用javaScript中的函数定义函数名。这是一个坏代码的例子吗?此外,(参数whatever)'event'甚至没有在代码中的任何其他地方定义。就砰。就在那里。是否有必要定义该值,或者(事件)是一个特殊的预定义值?最后,如果您将(event)替换为(e)之类的其他值,那么代码还会工作吗


谢谢这是一个匿名函数。函数是一个值,您可以像这样声明和存储函数。有关的更多信息

阅读代码(我认为它不需要比现在更多的注释),您正在编写一个处理程序函数,该函数在套接字打开时被调用。套接字打开事件将传递给变量
event
中的函数


为什么
事件
?因为不管API是什么,它都希望传入一个表示“打开”事件的参数。

这是一个匿名函数。函数是一个值,您可以像这样声明和存储函数。有关的更多信息

阅读代码(我认为它不需要比现在更多的注释),您正在编写一个处理程序函数,该函数在套接字打开时被调用。套接字打开事件将传递给变量
event
中的函数


为什么
事件
?因为不管API是什么,它都希望传入一个表示“打开”事件的参数。

这里得到的是函数表达式,而不是函数语句

在函数语句中,名称是必需的。在函数表达式中,它是可选的。具有名称的函数表达式称为命名函数表达式。没有表达式的函数称为匿名函数

在本问题中所涉及的所有这些不同的函数声明方法之间存在一些细微的差异


这里要做的是将
exampleSocket
onopen
属性设置为函数(表达式)。请注意,您根本没有运行该函数;您只需声明它,并将对它的引用保存在
exampleSocket.onopen

这意味着某人可以在需要时通过调用来执行该函数

exampleSocket.open();
它们可以向函数传递一个参数,您可以使用
event
变量在函数内部使用该参数(并回答您的问题;
event
不是一个特殊的词。您可以将其称为任何名称)

变量
event
没有在任何地方使用,这可能意味着开发人员将参数命名为“嘿,看,如果你愿意,你可以使用它”,但在他的实际实现中没有

您不必自己声明变量。它已经通过在参数列表中命名来声明,并且当有人在调用函数时传递参数时,它将被初始化为一个值


请注意,我们可以使用function语句定义此事件处理程序

function foo(event) {
    console.log(event);
}

exampleSocket.open = foo;
。。。或通过命名函数表达式:

exampleSocket.open = function foo(event) {
    console.log(event);
};
为了让事情变得混乱(别担心,这是JavaScript的一个怪癖),命名函数表达式的名称只在函数本身内部可用

exampleSocket.open = function foo(event) {
    console.log(event);

    console.log(typeof foo); // you'll get "function"
};

console.log(typeof foo); // you'll get "undefined"
。。。但是在函数语句中,您可以从内部和外部访问名称


我希望这有助于。。。这是一个有点“大脑垃圾”的信息:)。

这里有一个函数表达式,而不是函数语句

在函数语句中,名称是必需的。在函数表达式中,它是可选的。具有名称的函数表达式称为命名函数表达式。没有表达式的函数称为匿名函数

在本问题中所涉及的所有这些不同的函数声明方法之间存在一些细微的差异


这里要做的是将
exampleSocket
onopen
属性设置为函数(表达式)。请注意,您根本没有运行该函数;您只需声明它,并将对它的引用保存在
exampleSocket.onopen

这意味着某人可以在需要时通过调用来执行该函数

exampleSocket.open();
它们可以向函数传递一个参数,您可以使用
event
变量在函数内部使用该参数(并回答您的问题;
event
不是一个特殊的词。您可以将其称为任何名称)

变量
event
没有在任何地方使用,这可能意味着开发人员将参数命名为“嘿,看,如果你愿意,你可以使用它”,但在他的实际实现中没有

您不必自己声明变量。它已经通过在参数列表中命名来声明,并且当有人在调用函数时传递参数时,它将被初始化为一个值


请注意,我们可以使用function语句定义此事件处理程序

function foo(event) {
    console.log(event);
}

exampleSocket.open = foo;
。。。或通过命名函数表达式:

exampleSocket.open = function foo(event) {
    console.log(event);
};
为了让事情变得混乱(别担心,这是JavaScript的一个怪癖),命名函数表达式的名称只在函数本身内部可用

exampleSocket.open = function foo(event) {
    console.log(event);

    console.log(typeof foo); // you'll get "function"
};

console.log(typeof foo); // you'll get "undefined"
。。。但是在函数语句中,您可以从内部和外部访问名称


我希望这有助于。。。这是一个有点“大脑转储”的信息:)。

这是一个简单而常见的JS事件绑定函数

它将匿名函数附加到“exampleSocket”的“open”事件。 当触发此类事件时,将调用声明的函数

每个事件可能都有一些参数,这些参数包括