如何使用onclick与函数表达式而不是声明的函数?

jav*_*ttt 8 javascript onclick

我有一个按钮

var startButton = $('#startButton').get(0);
Run Code Online (Sandbox Code Playgroud)

我将vanilla javascript onclick方法附加到按钮上,然后单击调用start.

startButton.onclick = start;
Run Code Online (Sandbox Code Playgroud)

我想使用函数表达式,但(由于提升?)这不会调用start

var start = function() {
  console.log('requesting local stream');
  startButton.disabled = true;
  getUserMedia(constraints, gotStreamSuccess, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)

声明的函数可以

function start() {
  console.log('requesting local stream');
  startButton.disabled = true;
  getUserMedia(constraints, gotStreamSuccess, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)

我该怎么写

startButton.onclick = start;
Run Code Online (Sandbox Code Playgroud)

这样它可以用于函数表达式吗?

谢谢

Ada*_*dam 2

我同意你的观点,这是一个提升问题,你必须在设置之前查看你的代码以适当地提升它startButton.onclick = start;

以下是MDN关于语法的说明: 单击时的语法

它特别提到函数可以被声明或被表达。对我来说,这又导致了提升,因为函数声明会自动提升。

MDN使用函数声明我更改了JSFiddleonclick中的示例以使用函数表达式,正如您想要使用的那样。通过正确的提升,当您单击按钮时它会调用正确的方法。