Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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_Declaration - Fatal编程技术网

Javascript 声明函数的方法

Javascript 声明函数的方法,javascript,function,declaration,Javascript,Function,Declaration,可能重复: 这两种功能之间有什么区别 function a() { b=2; alert(b); } a(); 这个函数呢 var a=function() { b=2 alert(b); } a(); 主要区别是什么主要区别是在声明函数时: function a(){ // something... } 甚至在代码中声明它的位置之前,它就可以在同一范围内访问 但当您将匿名函数指定给变量时: var a = function(){ //

可能重复:

这两种功能之间有什么区别

function a()
{
    b=2;
    alert(b);
}
a(); 
这个函数呢

var a=function()
{
    b=2
    alert(b);
}
a();

主要区别是什么

主要区别是在声明函数时:

function a(){
    // something...
}
甚至在代码中声明它的位置之前,它就可以在同一范围内访问

但当您将匿名函数指定给变量时:

var a = function(){
    // something...
};
在分配之前不可用

创建函数时 它是函数实际创建时间的结果。在第一种情况下,它是在编译代码时创建的,而在第二种情况下,函数是在解释器到达赋值行时创建的

测试代码 通过执行以下代码(),您可以看到我上面提到的差异:


您将看到(如中所示),即使在实际声明之前,
a()
函数也被正确调用,但是
b()
在赋值之前不可用。

主要区别在于声明函数时:

function a(){
    // something...
}
甚至在代码中声明它的位置之前,它就可以在同一范围内访问

但当您将匿名函数指定给变量时:

var a = function(){
    // something...
};
在分配之前不可用

创建函数时 它是函数实际创建时间的结果。在第一种情况下,它是在编译代码时创建的,而在第二种情况下,函数是在解释器到达赋值行时创建的

测试代码 通过执行以下代码(),您可以看到我上面提到的差异:


您将看到(如中所示),即使在实际声明之前,
a()
函数也被正确调用,但是
b()
在赋值之前不可用。

唯一的真正区别是第二个函数没有名称,而
函数a(){}
一个被提升。

唯一真正的区别是第二个函数没有名字,而
函数a(){}
一个被提升。

区别在于函数a()是在脚本块的解析时定义的,而var a=函数()是在运行时定义的

<script type="text/javascript">
    // No errors occured;
    function a();

    function a(){
        console.log("Success");
    }
</script>

<script type="text/javascript">
    // An error will occured;
    a();

    var a = function (){
        console.log("Success");
    }
</script>

//没有发生错误;
函数a();
函数a(){
控制台日志(“成功”);
}
//将发生错误;
a();
var a=函数(){
控制台日志(“成功”);
}

不同之处在于,函数a()是在脚本块的解析时定义的,而var a=function()是在运行时定义的

<script type="text/javascript">
    // No errors occured;
    function a();

    function a(){
        console.log("Success");
    }
</script>

<script type="text/javascript">
    // An error will occured;
    a();

    var a = function (){
        console.log("Success");
    }
</script>

//没有发生错误;
函数a();
函数a(){
控制台日志(“成功”);
}
//将发生错误;
a();
var a=函数(){
控制台日志(“成功”);
}

它们都是在运行时定义的……是的,我知道您的答案反映了链接问题中投票率较高的答案,但在这方面,该答案是错误的。它们都是在运行时定义的……是的,我知道您的答案反映了链接问题中投票率较高的答案,但这个答案在这方面是错误的。这就是所有的区别吗?那么,我为什么要使用第二个例子呢?我认为要么这可以被视为所有差异,要么其他差异可以被视为这一差异的结果。一般来说,没有理由说一个优于另一个——这完全取决于您需要它做什么,具体的用例。在第二种情况下,您将能够对其进行操作,就像它只是一个变量一样,在第一种情况下定义、删除它的位置等等。这真的取决于你想在哪里以及如何使用它。这就是所有的区别吗?那么,我为什么要使用第二个例子呢?我认为要么这可以被视为所有差异,要么其他差异可以被视为这一差异的结果。一般来说,没有理由说一个优于另一个——这完全取决于您需要它做什么,具体的用例。在第二种情况下,您将能够对其进行操作,就像它只是一个变量一样,在第一种情况下定义、删除它的位置等等。这实际上取决于您希望在何处以及如何使用它。请注意,还有属性访问器的概念,它们是getter和setter函数:它们在“函数”之前使用特殊关键字
get
set
name,它实际上是已处理访问的属性的名称。请注意,还有属性访问器的概念,即getter和setter函数:它们在“函数”名称之前使用特殊关键字
get
set
,而“函数”名称实际上是已处理访问的属性的名称。