Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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 - Fatal编程技术网

javascript中的函数语句和函数表达式

javascript中的函数语句和函数表达式,javascript,Javascript,在学习javascript时,我遇到了函数语句和函数表达式 function fun(){} // function statement var fun = function() {} //function expression (function() { alert("I am a function"); }()); 然后我看到这个例子被解释为函数表达式 function fun(){} // function statement var fun = function() {} //

在学习javascript时,我遇到了函数语句和函数表达式

function fun(){} // function statement
var fun = function() {} //function expression
(function() {
   alert("I am a function");
}());
然后我看到这个例子被解释为函数表达式

function fun(){} // function statement
var fun = function() {} //function expression
(function() {
   alert("I am a function");
}());
这真的是一个函数表达式吗?在我看来,它是一个函数语句 作为


将函数括在括号中使其成为表达式

function fun(){} // function statement
var fun = function() {} //function expression
(function() {
   alert("I am a function");
}());
这是因为JavaScript中的括号不能包含语句,因此引擎知道将封闭函数解析为表达式

function fun(){} // function statement
var fun = function() {} //function expression
(function() {
   alert("I am a function");
}());
如果您使用了仅对表达式进行操作的任何其他操作,则情况也是如此:

(function () {}());
!function () {}();
+function () {}();
~function () {}();
void function () {}();

下面的代码是一个
函数表达式
:由于名称全部使用关键字
表达式
,这意味着它是一个值。如果它只是一个表达式,并且可以作为任何其他值传递,即
字符串
数字
布尔值
。但是,如果它作为引用存储在变量中,则它将成为一个
语句或声明。继续读

function () { }
还可以为函数表达式指定名称,并将其转换为命名函数表达式

function foo() { }
函数名(上面的foo)仅存在于函数内部,例如,可以用于自递归:

函数声明
或语句,即在引用变量中存储值,此处引用变量为

var fac = function me(x) { return x <= 1 ? 1 : x * me(x-1) }
fac(10)
3628800
console.log(me)
ReferenceError: me is not defined
var fac=function me(x){返回x的可能副本它是的可能副本