每次调用函数时,都要修改Javascript中的局部变量
Modifying a local variable in Javascript every time the function is called
每次调用myFunction()
时,我都想增加i
的值。正如您所看到的,每次i
的值初始化为0
时。所以结果总是零。如何确保i
保持为局部变量并获得增量?如何使用闭包的概念来实现这一点?
function myFunction(){
var i = 0;
console.log(i);
i++
};
myFunction();
myFunction();
myFunction();
myFunction(); // Result must be 3
对@Carlo的回答做了一点修改。这将使myFunction
保持在当前范围内。
var myFunction = (function() {
var i = 0;
return function (){
console.log(i);
i++;
};
})();
示例:
myFunction(); // logs 0
myFunction(); // logs 1
myFunction(); // logs 2
myFunction(); // logs 3
简短的回答:将变量移出作用域。
(function() {
var i = 0;
myFunction = function (){
console.log(i);
i++
};
})()
myFunction();
myFunction();
myFunction();
myFunction();
使用范围更广的函数将防止变量变为全局变量。
正如其他人所建议的,将变量从函数的作用域中移除就是答案。另一种选择是将变量设置为函数的属性。
function myFunction() {
if (typeof myFunction.i !== "number") {
myFunction.i = 0;
}
console.log(myFunction.i);
myFunction.i += 1;
}
function myFunction() {
console.log(i);
myFunction.i++
};
myFunction.i = 0;
myFunction();
myFunction();
myFunction();
myFunction(); // Result must be 3
将变量放入全局范围:
var i = 0;
function myFunction(){
console.log(i);
i++
};
myFunction();
myFunction();
myFunction();
myFunction(); // Result will be 3
相关文章:
- 用Javascript修改内部标记的CSS规则
- 历史记录和通过JavaScript修改的HTML
- 如何使用 javascript 修改网格视图单元格值
- 鼠标离开浏览器窗口的Javascript修改
- Javascript-修改函数或从字符串中计算函数
- Chrome在尝试从Javascript修改CSS3动画时崩溃
- 用javascript修改链接html
- 获取远程url's上次使用javascript修改的日期
- C# - 通过控制台应用程序访问 Javascript 修改的 HTML
- 使用 JavaScript 修改 Facebook 共享内容
- JavaScript 修改 URL 参数数组
- 使用 JavaScript 修改 DOM 元素属性
- 如何使用 JavaScript 修改网站的标题
- 想要用greatemonkey/javascript修改页面上的链接
- 如何使用 javascript 修改特定域的现有 cookie 值
- Javascript - 修改函数内的全局变量
- 使用 JavaScript 修改 BIRT 中的查询输出
- Mozilla 所需的任何 JavaScript 修改
- 如何在窗口打开后使用 javascript 修改浏览器属性/属性
- Javascript:修改函数以动态创建表