js中闭包的理解一

函数可以通过声明定义,也可以是一个表达式。
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();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值