function init() {
var name = "Mozilla"; // name 是个由 init 建立的区域变数
function displayName() { // displayName() 是内部函式(子函式),一个闭包
alert(name); // 使用了父函式宣告的变数:name
}
displayName();
}
init();
闭包通常都会用回传 (return) 的方式,取得外部函式的变数 or 参数作运用。
function storeMoney() {
var money = 1000;
return function (price) {
money = money + price;
return money;
}
};
console.log(storeMoney());
//return 即为表达式,代表function storeMoney会从return回传一个值出来,因为无参数,所以传出function (price)。
console.log(storeMoney()(100)); 1100
var Kingmoney = storeMoney();
console.log(Kingmoney); //结果同console.log(storeMoney())
console.log(Kingmoney(1000)); //2000
console.log(Kingmoney(1000)); //3000 因为变数money一直被子函式参考,所以不会从记忆体中消除。
var Queenmoney = storeMoney();
console.log(Queenmoney(20)); //1020,参数更改
console.log(Queenmoney(20)); //1040
function arrFunction() {
var arr = [];
for (var i = 0; i < 3; i++) {
arr.push(function () {
console.log(i);
});
}
console.log(arr);
console.log('i', i); // i 3
return arr;
}
var fn = arrFunction();
fn[0]();
fn[1]();
fn[2]();
var arr = []; //3 3 3
因为变数i皆会等回圈结束後才会把最後i的值带入函式,所以无论参数是多少,子函数都会参考到 for 回圈中的i。
利用立即函式的特性,每执行一次回圈,立即执行一次立即函式;本例利用回圈的变数c填入立即函数的参数(newc)位置。
function arrFunction() {
var arr = [];
for (var c = 0; c < 3; c++) {
(function (newc) {
arr.push(function () {
console.log(newc);
});
})(c)
};
return arr;
}
var fn = arrFunction();
fn[0]();
fn[1]();
fn[2]();
var arr = [];
function arrFunction() {
var arr = [];
for (let c = 0; c < 3; c++) {
arr.push(function () {
console.log(c);
});
}
console.log(arr);
// console.log('c', c);
return arr;
}
var fn = arrFunction();
fn[0]();
fn[1]();
fn[2]();
var arr = [];
function carprice(GPS) {
var car = 1000;
var sum = 0;
GPS = GPS || 0; //当GPS有被填入参数值的时候选择参数值,如果没填入则为0。
return function (GPS) {
sum = GPS + car;
return sum;
};
};
var Tom = carprice();
console.log(Tom(1000));
参考文章:
<<: 实施零信任架构以防止横向移动,XACML最不可能进行身份验证
资料准备 啊以为第二天开始就是程序码喔,NONONO,要接入金融机构的系统,不是任何人都能直接跑进去...
传统的安全性资讯与事件管理(SIEM)系统通常需要很长的时间 来安装及设定。这类系统在设计时也不一定...
今天要盖出阿嬷家!让小红帽走进阿嬷家,找到阿嬷。 1.新建场景 右键 > Create >...
第二十四天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,...
本篇延续第六篇按钮开关样板,来触发之後的行为 昨天做了一个开关,那要怎麽透过科好的按钮,来判断之後...