如何在另一个函数内声明一个函数?

时间:2015-12-08 13:38:53

标签: javascript

如何在另一个函数内部声明一个函数,然后在该函数之外执行?
例:

function createFunction(){
    function myFunction(){console.log('Hello World!');};
};
createFunction();
myFunction();

这将返回一个错误,说明myFunction未定义。
我如何使这项工作?

2 个答案:

答案 0 :(得分:1)

首先,您必须执行父函数,然后将函数保存在全局命名空间中。这不是好习惯!!但它解决了你的问题。

(function createFunction(){
    window.myFunction = function(){console.log('Hello World!');};
  })();
  myFunction();

答案 1 :(得分:1)

您只需要从createFunction

返回该功能
function createFunction(){
    return function myFunction(){console.log('Hello World!');};
};
var myFunction = createFunction();
myFunction() // => Hello World!, You just learn't functional js

使用函数js,您还可以使用currying传递参数以使函数更易于重复使用,例如。

function createFunction( greeting ){
    return function myFunction( who ){console.log( greeting + ' ' + who );};
};
// create two functions from our createFunction and return some partially applied functions.
var hello = createFunction('Hello'); // => myFunction with greeting set
var sup = createFunction('Sup'); // myFunction with greeting set

// now that functions hello and sup have been created use them
hello('World!') // => Hello World!
hello('Internets!') // => Hello Internets!
sup('Stack!') // => Sup Stack!
sup('Functional JS!') // => Sup Functional JS!