有关在函数中使用括号的问题

时间:2019-12-01 18:01:04

标签: javascript

我开始学习javascript,我实现了这一小段代码。我花了很长时间尝试运行浏览器,直到意识到问题出在调用带或不带括号的函数,注意注释行。

var buttonElement = document.querySelector('#app button');
var tarefaDigitada = document.querySelector('#app input');
var listElement = document.querySelector('#app ul');

var todos = ['Cofee', 'Beer', 'Water'];

function renderTodos() {

    listElement.innerHTML = '';

    for (todo of todos) {
        var todoElement = document.createElement('li');
        var todoText = document.createTextNode(todo); 

        todoElement.appendChild(todoText);
        listElement.appendChild(todoElement);

    }
}

function addTodo() {
    var text = tarefaDigitada.value;
    console.log(tarefaDigitada.value);
    todos.push(text);
    tarefaDigitada.value = '';
    renderTodos();//No parentheses doesn't work

}
renderTodos();
buttonElement.onclick = addTodo;//With parentheses does not work

即使没有参数,也必须加上括号吗?为什么在调用onclick时我不能放?

2 个答案:

答案 0 :(得分:1)

当您要在该行本身中调用函数时,请加上括号,而在另一种情况下,您要告诉JS在每次单击按钮不正确时都在内部调用该函数。

答案 1 :(得分:1)

围绕SO一定存在这个问题的虚假之处。当您执行onclick = addTodo()时,您将调用该函数并将onclick设置为该函数返回的值。你不想要那个您想将onclick设置为函数本身,因此不要使用括号。