Javascript 是否有必要在JS中为带有参数的函数添加参数

Javascript 是否有必要在JS中为带有参数的函数添加参数,javascript,function,parameters,arguments,Javascript,Function,Parameters,Arguments,来自Java并试图学习Javascript,以下代码是有效的: const myCustomDiv = document.createElement('div'); function respondToTheClick(evt) { evt.target.textContent = 'This paragraph has been clicked!'; } for (let i = 0; i < 100; i++) { const newElement = docum

来自Java并试图学习Javascript,以下代码是有效的:

const myCustomDiv = document.createElement('div');

function respondToTheClick(evt) {
    evt.target.textContent = 'This paragraph has been clicked!'; 
}

for (let i = 0; i < 100; i++) {
    const newElement = document.createElement('p');
    newElement.textContent = 'This is paragraph number ' + i;

    myCustomDiv.appendChild(newElement); 
}

document.body.appendChild(myCustomDiv);

myCustomDiv.addEventListener('click', respondToTheClick);
const myCustomDiv=document.createElement('div');
功能响应点击(evt){
evt.target.textContent='此段落已被单击!';
}
for(设i=0;i<100;i++){
const newElement=document.createElement('p');
newElement.textContent='这是段落编号'+i;
myCustomDiv.appendChild(新元素);
}
document.body.appendChild(myCustomDiv);
myCustomDiv.addEventListener(“单击”,响应单击);
下面的不是,并且给出了一个错误

const myCustomDiv = document.createElement('div');

function respondToTheClick(evt) {
    evt.target.textContent = 'This paragraph has been clicked!';
}

for (let i = 0; i < 100; i++) {
    const newElement = document.createElement('p');
    newElement.textContent = 'This is paragraph number ' + i;

    myCustomDiv.appendChild(newElement);
}

document.body.appendChild(myCustomDiv);

myCustomDiv.addEventListener('click', respondToTheClick(event) );  //<--added event argument
const myCustomDiv=document.createElement('div');
功能响应点击(evt){
evt.target.textContent='此段落已被单击!';
}
for(设i=0;i<100;i++){
const newElement=document.createElement('p');
newElement.textContent='这是段落编号'+i;
myCustomDiv.appendChild(新元素);
}
document.body.appendChild(myCustomDiv);
myCustomDiv.addEventListener('单击',响应单击(事件));//任何


对于Java,如果方法需要参数,则必须提供参数。JS不是这样吗?如果是这样,这是如何工作的?或者这只是eventListeners的情况?

在JavaScript中,函数是一级对象。你可以对一个函数做任何你可以对一个对象做的事情。这包括将其作为函数的参数传递

addEventListener("click", respondToTheClick)
…将
respondToTheClick
作为
addEventListener
的第二个参数传递

addEventListener('click', respondToTheClick(event) );
相当于:

let return_value = respondToTheClick(event);
addEventListener('click', return_value);
addEventListener
的第二个参数需要是一个函数。
响应点击(事件)
的返回值不是函数。这就是为什么会出现错误

当内置在浏览器中且在
addEventListener
函数中的其他代码调用作为参数传递给它的函数时,该代码将作为参数传递事件对象

功能手柄事件(e){
控制台日志(e);
}
函数addEventDemo(事件类型,事件处理程序){
事件处理程序(“E是”+事件类型);
}

addEventDemo(“单击”,handleEvent)在JavaScript中,函数是一级对象。你可以对一个函数做任何你可以对一个对象做的事情。这包括将其作为函数的参数传递

addEventListener("click", respondToTheClick)
…将
respondToTheClick
作为
addEventListener
的第二个参数传递

addEventListener('click', respondToTheClick(event) );
相当于:

let return_value = respondToTheClick(event);
addEventListener('click', return_value);
addEventListener
的第二个参数需要是一个函数。
响应点击(事件)
的返回值不是函数。这就是为什么会出现错误

当内置在浏览器中且在
addEventListener
函数中的其他代码调用作为参数传递给它的函数时,该代码将作为参数传递事件对象

功能手柄事件(e){
控制台日志(e);
}
函数addEventDemo(事件类型,事件处理程序){
事件处理程序(“E是”+事件类型);
}

addEventDemo(“单击”,handleEvent)第一个示例是将函数
respondToTheClick
的引用传递到
addEventListener
。该函数不会立即执行,而是注册(使用
addEventListener
)在事件发生时由浏览器执行。这在javascript中称为a

在第二个示例中,您正在调用函数,然后将该调用的返回值作为参数传递给
addEventListener
。例如,
foo(sum(1,2))
3
传递给
foo
,而不是函数
sum
本身

在javascript中,函数是对象,您可以像使用常规对象那样准确地使用它们。它们也是可调用的(可以调用)。在javascript中,就像在java中一样,您可以将对象分配给不同的变量,这不会创建对象的新副本,而是会创建指向同一对象的不同变量。由于函数是javascript中的对象,因此以下内容是有效的,并按预期工作:

函数sayHi(){
控制台日志(“Hi”);
}
//“func”和“sayHi”将指向同一个对象,该对象为
//向控制台打印“Hi”的功能。
var func=sayHi;
//尽管从未定义过名为“func”的函数,但
//由于上述任务,仍将工作

func()第一个示例是将函数
respondToTheClick
的引用传递到
addEventListener
。该函数不会立即执行,而是注册(使用
addEventListener
)在事件发生时由浏览器执行。这在javascript中称为a

在第二个示例中,您正在调用函数,然后将该调用的返回值作为参数传递给
addEventListener
。例如,
foo(sum(1,2))
3
传递给
foo
,而不是函数
sum
本身

在javascript中,函数是对象,您可以像使用常规对象那样准确地使用它们。它们也是可调用的(可以调用)。在javascript中,就像在java中一样,您可以将对象分配给不同的变量,这不会创建对象的新副本,而是会创建指向同一对象的不同变量。由于函数是javascript中的对象,因此以下内容是有效的,并按预期工作:

函数sayHi(){
控制台日志(“Hi”);
}
//“func”和“sayHi”将指向同一个对象,该对象为
//向控制台打印“Hi”的功能。
var func=sayHi;
//尽管从未定义过名为“func”的函数,但
//由于上述任务,仍将工作

func()事件侦听器正在使用回调,它在第二个回调中出错,因为您立即调用了该方法