在JavaScript中,既有对象字面量又有函数字面量。
对象文字:
myObject = {myprop:"myValue"}
函数字面量:
myFunction = function() {
alert("hello world");
}
字面这个词的意义是什么?我们能说Java有方法文字吗?
public void myMethod() {
System.out.println("are my literal");
}
发布于 2012-09-07 09:03:56
函数文字只是一个定义未命名函数的表达式。
函数文本的语法与function语句非常相似,不同之处在于它用作表达式而不是语句,并且不需要函数名。
所以当你给出方法名的时候,它就不能是方法文字了。
发布于 2012-09-07 09:11:21
最大的区别在于如何/何时解析和使用它。以你的例子为例,
myFunction = function() {
alert("hello world");
}
您只能在代码到达那里之后运行myFunction()
,因为您使用匿名函数声明了一个变量。
如果你用另一种方式,
function myFunction(){
alert("hello world");
}
这个函数在编译时被声明为,并且可以在作用域中的任何时候使用。
发布于 2016-10-02 20:19:53
附加组件:
JavaScript中的函数文字是函数表达式的同义词。
与函数表达式类似,函数文字可以有一个可选的标识符(名称)。
因此,如果我们说函数表达式/函数文字,它包括没有标识符的函数表达式/函数文字(也称为匿名函数),但也包括有标识符的函数表达式/函数文字。即使在许多书中,函数表达式/函数文字被用作函数表达式/函数文字的同义词,但没有标识符(匿名函数)。
函数文字
Function对象是使用函数文字创建的:
//创建一个名为add的变量,并在其中存储一个函数//,该函数将两个数字相加。
> var add = function (a, b) {
> return a + b; };
函数文本包含四个部分。
第一部分是保留字函数。
可选的第二部分是函数的名称。该函数可以使用其名称递归地调用自身。调试器和开发工具也可以使用该名称来标识函数。如果没有为函数指定名称,如上一个示例所示,则称其为匿名函数。
第三部分是函数的参数集,用括号括起来。括号内是一组零个或多个参数名称,用逗号分隔。这些名称将被定义为函数中的变量。与普通变量不同,它们不会被初始化为未定义的变量,而是在调用函数时被初始化为所提供的参数。
第四部分是一组用大括号括起来的语句。这些语句是函数的主体。它们是在调用函数时执行的。
函数文字可以出现在表达式出现的任何地方...
来源:JavaScript: The Good Parts - Douglas Crockford
这意味着:
myFunction = function () {
alert("hello world");
};
是函数表达式/函数文字,但也是:
myFunction = function myFunction() {
alert("hello world");
};
是函数表达式/函数文字。
https://stackoverflow.com/questions/12314905
复制相似问题