Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript嵌套函数-有什么区别?_Javascript_Function - Fatal编程技术网

Javascript嵌套函数-有什么区别?

Javascript嵌套函数-有什么区别?,javascript,function,Javascript,Function,我正在考虑以下Javascript最佳实践模式。我的代码中有一个函数,它有一些嵌套函数。应首选以下哪种模式?为什么 function parent() { function child1() { //child 1 code } function child2() { //child2 code } //parent code return { child1: child1, chi

我正在考虑以下Javascript最佳实践模式。我的代码中有一个函数,它有一些嵌套函数。应首选以下哪种模式?为什么

function parent() {
    function child1() {
        //child 1 code
    }

    function child2() {
        //child2 code
    }
    //parent code
    return {
        child1: child1,
        child2: child2
    };
}


这两个版本的主要区别在于

var a = function(){ ...
函数未定义,直到该行(但变量存在)处于

从封闭函数开始定义函数:

console.log(a); // logs "function a(){ return 2} "
console.log(b); // logs "undefined"
function a(){ return 2};
var b = function(){ return 2};
正如Jan指出的,第一个版本还定义了函数的
name
属性


除此之外,没有区别,主要是风格问题,我不知道最佳实践。

这两个版本的主要区别在于

var a = function(){ ...
函数未定义,直到该行(但变量存在)处于

从封闭函数开始定义函数:

console.log(a); // logs "function a(){ return 2} "
console.log(b); // logs "undefined"
function a(){ return 2};
var b = function(){ return 2};
正如Jan指出的,第一个版本还定义了函数的
name
属性


除此之外,没有区别,主要是风格问题,我所知没有最佳实践。

js中所有命名函数都可以通过名称访问。

另一个建议是

var parent;

parent = function() {
  var child1, child2;
  child1 = function() {};
  child2 = function() {};
  return {
    child1: child1,
    child2: child2
  };
};

js中的所有命名函数都可以通过名称访问。

另一个建议是

var parent;

parent = function() {
  var child1, child2;
  child1 = function() {};
  child2 = function() {};
  return {
    child1: child1,
    child2: child2
  };
};


是否需要?可能的@FCL副本这与codereview没有任何关系。@ShaiAharoni将函数赋值给变量可以更容易地将它们作为参数传递给其他函数。对我来说,第二个原因是有利的。。。我觉得编辑后的问题比以前好多了。你也这么认为吗?你需要吗?可能重复的@FCL这在codereview中看不到任何东西。@ShaiAharoni将函数赋值给一个变量可以更容易地将它们作为参数传递给其他函数。对我来说,第二个原因是有利的。。。我觉得编辑后的问题比以前好多了。你也这么认为吗?
a.name
也能区分这两个(也注意到我投票关闭了)@JanDvorak我看到了。但是,虽然标题会让人觉得这是一个意见问题,但我不认为这些话只是征求意见:“更好或更正确”。也许编辑可以解决这个问题;但至少有一两个答案已经是纯粹的观点。我应该编辑而不是关闭吗?(我已经否决了一个纯粹的观点)
a.name
也可以区分这两个(也请注意我投票关闭了)@JanDvorak我看到了。但是,虽然标题会让人觉得这是一个意见问题,但我不认为这些话只是征求意见:“更好或更正确”。也许编辑可以解决这个问题;但至少有一两个答案已经是纯粹的观点。我应该编辑而不是结束吗?(我已经否决了纯观点的那一个)它们不完全一样(见我的答案)。嗯。。。你的建议比提问者提供的两个建议有什么好处?没有好处。事实上,使用的是单一的var模式。是的,它并不完全相同,记住javascript的执行流程。它们并不完全相同(见我的答案)。嗯。。。你的建议比提问者提供的两个建议有什么好处?没有好处。事实上,使用的是单一的var模式。是的,它实际上并不相同,记住javascript的执行流程。