js中闭包
来源:互联网 发布:淘宝禁止开店 编辑:程序博客网 时间:2024/06/04 23:31
闭包就是有权访问从函数外访问函数里定义的变量的函数。
1
function fn(){
var a=2;
function fn1(){
alert(a);
}
return fn1;
}
var fn2=fn();
fn2();
注意注意只有当调用有返回值建立引用时--函数里声明的函数的引用--才能才能调用函数里声明的函数
function fn(){
var a=2;
function fn1(){
alert(a);
}
}
var fn2=fn();
fn2();
不返回函数名是建立不了引用的。
2
function fn(){
var a=0;
function fn1(){
a++;
console.log(a);
}
fn1();
fn1();
}
fn();
闭包函数执行过程会被保存--闭包的重要特性--但滥用会内存溢出。
3
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){//当执行到最后一遍时i是10
result[i] = function(){
return i;//只有当函数执行时 i才被赋值 注意声明和调用是两个概念。
//是闭包访问的函数里的i,只是要注意声明和调用的问题。
};
}
return result;
}
var funcs = createFunctions();
for (var i=0; i < funcs.length; i++){闭包就是有权访问从函数外访问函数里定义的变量的函数。
1
function fn(){
var a=2;
function fn1(){
alert(a);
}
return fn1;
}
var fn2=fn();
fn2();
注意注意只有当调用有返回值建立引用时--函数里声明的函数的引用--才能才能调用函数里声明的函数
function fn(){
var a=2;
function fn1(){
alert(a);
}
}
var fn2=fn();
fn2();
不返回函数名是建立不了引用的。
2
function fn(){
var a=0;
function fn1(){
a++;
console.log(a);
}
fn1();
fn1();
}
fn();
闭包函数执行过程会被保存--闭包的重要特性--但滥用会内存溢出。
3
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){//当执行到最后一遍时i是10
result[i] = function(){
return i;//只有当函数执行时 i才被赋值 注意声明和调用是两个概念。
//是闭包访问的函数里的i,只是要注意声明和调用的问题。
};
}
return result;
}
var funcs = createFunctions();
for (var i=0; i < funcs.length; i++){
console.log(funcs[i]());
}
i的值在调用时被确定,由于
createFunctions
里面定义的函数形成了闭包函数,result建立了引用--函数外可以调用--i同样被保存。只不过i保存的只有10。执行时再付的值。
4
setInterval(function(){
imgs[outIndex].style.zIndex = 2;
imgs[inIndex].style.zIndex = 3;
//imgs[inIndex].style.opacity = 0~1;
change(inIndex, function(){
imgs[outIndex].style.zIndex = 1;
outIndex++;
inIndex++;//闭包保存执行结果
if(inIndex >= imgs.length){
inIndex = 0;
}
if(outIndex >= imgs.length){
outIndex = 0;
}
});
}, 4000);
这是做渐变效果中封装的一个函数,
闭包用于保存下标的执行结果。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());*/
/* var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
//主要是考察·this指向 如果指向原生object。
1
function fn(){
var a=2;
function fn1(){
alert(a);
}
return fn1;
}
var fn2=fn();
fn2();
注意注意只有当调用有返回值建立引用时--函数里声明的函数的引用--才能才能调用函数里声明的函数
function fn(){
var a=2;
function fn1(){
alert(a);
}
}
var fn2=fn();
fn2();
不返回函数名是建立不了引用的。
2
function fn(){
var a=0;
function fn1(){
a++;
console.log(a);
}
fn1();
fn1();
}
fn();
闭包函数执行过程会被保存--闭包的重要特性--但滥用会内存溢出。
3
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){//当执行到最后一遍时i是10
result[i] = function(){
return i;//只有当函数执行时 i才被赋值 注意声明和调用是两个概念。
//是闭包访问的函数里的i,只是要注意声明和调用的问题。
};
}
return result;
}
var funcs = createFunctions();
for (var i=0; i < funcs.length; i++){闭包就是有权访问从函数外访问函数里定义的变量的函数。
1
function fn(){
var a=2;
function fn1(){
alert(a);
}
return fn1;
}
var fn2=fn();
fn2();
注意注意只有当调用有返回值建立引用时--函数里声明的函数的引用--才能才能调用函数里声明的函数
function fn(){
var a=2;
function fn1(){
alert(a);
}
}
var fn2=fn();
fn2();
不返回函数名是建立不了引用的。
2
function fn(){
var a=0;
function fn1(){
a++;
console.log(a);
}
fn1();
fn1();
}
fn();
闭包函数执行过程会被保存--闭包的重要特性--但滥用会内存溢出。
3
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){//当执行到最后一遍时i是10
result[i] = function(){
return i;//只有当函数执行时 i才被赋值 注意声明和调用是两个概念。
//是闭包访问的函数里的i,只是要注意声明和调用的问题。
};
}
return result;
}
var funcs = createFunctions();
for (var i=0; i < funcs.length; i++){
console.log(funcs[i]());
}
i的值在调用时被确定,由于
createFunctions
里面定义的函数形成了闭包函数,result建立了引用--函数外可以调用--i同样被保存。只不过i保存的只有10。执行时再付的值。
4
setInterval(function(){
imgs[outIndex].style.zIndex = 2;
imgs[inIndex].style.zIndex = 3;
//imgs[inIndex].style.opacity = 0~1;
change(inIndex, function(){
imgs[outIndex].style.zIndex = 1;
outIndex++;
inIndex++;//闭包保存执行结果
if(inIndex >= imgs.length){
inIndex = 0;
}
if(outIndex >= imgs.length){
outIndex = 0;
}
});
}, 4000);
这是做渐变效果中封装的一个函数,
闭包用于保存下标的执行结果。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());*/
/* var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
//主要是考察·this指向 如果指向原生object。
阅读全文
0 0
- js中闭包
- js中闭包
- js中闭包的概念
- JS中闭包的优缺点
- js中闭包的概念
- js中闭包的用法
- 19.js中闭包
- js中闭包问题
- JS中闭包的理解
- js中闭包的使用
- js中闭包理解
- js中闭包的理解
- js中闭包及其用途
- js
- js
- JS
- JS
- JS
- python3 迭代器与生成器
- Javase基础知识(1)
- 3D打印切片软件Cura的简单使用
- 函数的原型链,原型链的完整版以及原型链的族谱
- Java 集合框架
- js中闭包
- 机器学习实验---人工神经网络MLP基于sklearn的实现
- Open CV 学习开发笔记之概述(一)
- Apache的DBUtils使用详解
- leetcode 88. Merge Sorted Array
- leetcode
- Android Studio自带图标库和开源图标库怎么使用?
- printf
- golang基础-数组、切片创建_内存_底层实现_修改值_拷贝_循环、string与切片