函数可以通过声明定义,也可以是一个表达式。
function cc(){b++;alert(b);}
但当aa()();时弹11.
function functionName(parameters) {
//执行的代码
}
函数声明后不会立即执行,会在我们需要的时候调用到。分号是用来分隔可执行JavaScript语句。 由于函数声明不是一个可执行语句,所以不以分号结束。
var x = function (a, b) {return a * b};
var z = x(4, 3);
以上函数实际上是一个 匿名函数 (函数没有名称)。函数存储在变量中,不需要函数名称,通常通过变量名来调用。上述函数以分号结尾,因为它是一个执行语句。
(function () {
var x = "Hello!!"; // 我将调用自己
})();
不能自调用声明的函数,通过添加括号,来说明它是一个函数表达式,表达式后面紧跟 () ,则会自动调用。
function aa(){
var b = 10;
return function cc(){
b++;
alert(b);
}
}
aa()();
这个函数调用时,aa()();有两个括号,第一个括号是调用aa()函数,第二个括号是执行cc()函数。直接alert(aa()),返回的是子函数cc的内容,并没有调用子函数,结果弹:
function cc(){b++;alert(b);}
但当aa()();时弹11.
function a(){
var i = 0;
function b(){
alert(++i);
}
return b;//如果写成return b();则调用a函数后,子函数b直接执行了,也就是执行到c();时会报错"Uncaught TypeError: c is not a function(…)"
}
var c = a();
c();