如何在另一个函数内部声明一个函数,然后在该函数之外执行?
例:
function createFunction(){
function myFunction(){console.log('Hello World!');};
};
createFunction();
myFunction();
这将返回一个错误,说明myFunction未定义。
我如何使这项工作?
答案 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!