php函数声明提前,js中闭包的解释以及变量声明提前的例子(代码)

本文详细解析了JavaScript闭包的概念,通过实际代码展示了闭包如何保持函数作用域的持久性,并介绍了闭包在实现对象私有属性和变量声明提前现象中的应用。还提供了相关jQuery示例,揭示了变量声明提前在JavaScript中的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇文章给大家带来的内容是关于js中闭包的解释以及变量声明提前的例子(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

闭包

在函数A中声明了函数B,函数B中使用了函数A的作用域中的变量,且函数A返回(return)了函数B,那么函数B就对函数A的作用域形成了闭包,函数A调用完毕之后,只要返回的函数B存在,函数A的作用域也一直存在function makeFn(){

var n1 = 100;

function fn(){

var n2 = 200;

console.log(n1);

}

return fn;

}

var f2 = makeFn();

f2();

闭包可以实现对象的私有属性,如:var obj = {

name:"sunset",

age:12,

speak:function(){

console.log("我是"+this.name);

}

}

console.log(obj.name);

再来一个例子:function makeObj(){

var name = "sunset";

var age = 12;

var obj = {

speak:function(){

console.log("我叫"+name);

}

}

return obj;

}

console.log(obj.speak());

最后一个非常好的例子:(导入jQuery后执行看看)

for (var i = 0; i < 10; i++) {

function makeFn(index) {

function fn() {

console.log(index)

}

return fn;

}

var btn = makeFn(i);

$("")

.text(i + 1)

.appendTo(document.body)

.on("click",btn)

}

变量声明提前:

在js的作用域中,所有变量的声明都会被提前,但是赋值不会提前(变量提前就不演示了,学到这已经不用解释了)var a = 3;

function f1(){

console.log(a);

var a = 10;

}

f1();

等同于function f1(){

var a;

console.log(a);

a = 10;

}

f1();

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值