为什么我的JavaScript控制台总是说未定义

时间:2019-03-20 18:35:28

标签: javascript

这段代码应在将消息输入到JavaScript控制台时在WhatsApp Web中发送一条消息,但始终显示undefined

如何防止这种情况?

function whatsAppText(t) {
  window.InputEvent = window.Event || window.InputEvent;
  var d = new Date();
  var event = new InputEvent('input', {bubbles: true});
  var textbox = document.querySelector('#main > footer > div.block-compose > div.input-container > div > div.input');
  textbox.textContent = t;
  textbox.dispatchEvent(event);
  document.querySelector('.icon.btn-icon.icon-send.send-container').click()
}

2 个答案:

答案 0 :(得分:1)

那是因为您仅定义一个函数而不执行它。在声明该函数之后,您必须在某个地方调用该函数:

whatsAppText('This should work!');

答案 1 :(得分:1)

控制台将报告表达式的 返回 值。如果函数执行有意义的操作,但不返回任何内容,则执行该函数将不返回任何内容,因此为undefined

这里是一个例子:

function foo(){
  document.body.innerHTML = "<p>I did some work, but I didn't return a value.</p>";
}

console.log(foo());  // undefined

相对于:

function foo(){
  return "I did some work, and I did return a value.";
}

console.log(foo());  // "I did some work, and I did return a value."

但是,如果您要做的只是将功能输入到控制台中,甚至没有调用它,那将不会返回任何内容,控制台将报告undefined。根据显示的代码,即使您随后使用whatsAppText("test")调用函数, 您的函数也会执行 并发送消息,但是您没有将功能设置为 返回 的任何内容,因此 您仍然会看到 {{1 }}。