在Javascript中,为什么要编写"var QueryStringToHash = function QueryStringToHash(query){...}"?

nop*_*ole 1 javascript

在Javascript中,我已经看到了

var QueryStringToHash = function QueryStringToHash  (query) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

写这个而不仅仅是的原因是什么

function QueryStringToHash(query) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这来自JavaScript/jQuery中$ .param()反函数的答案

Guf*_*ffa 6

声明一个函数意味着它在解析脚本块时定义,而将它分配给变量则在运行时完成:

x(); // this works as the function is defined before the script block is executed

function x() {}
Run Code Online (Sandbox Code Playgroud)

但:

x(); // doesn't work as x is not assigned yet

var x = function() {}
Run Code Online (Sandbox Code Playgroud)

为变量分配函数可以有条件地完成.例:

var getColor;
if (color == 'red') {
  getColor = function() { return "Red"; }
} else {
  getColor = function() { return "Blue"; }
}
Run Code Online (Sandbox Code Playgroud)