带有初始化的JavaScript阴影
JavaScript shadowing with initialization
在我深入讨论这个问题之前,我想澄清一下,我的用例涉及到修补一个转换编译器来生成一个适当的等价,因此有点尴尬的问题。
我想要遮蔽一个外部变量,但初始化它为与外部变量相同的值。下面是一个例子:
var a = 2;
(function(){
var a = a;
a += 3;
// I want `a` to be 5
})();
// I want `a` to be 2
我意识到上面的例子,内部的a
将是NaN
(undefined + 3
),但我可以初始化变量做阴影相同的一个,它以某种方式阴影?将其作为参数传递是不可选的,因为该函数将由用户编写,唯一保持一致的是内部作用域的存在。我正在考虑改变内部变量a
的名称,但编译器目前没有以一种容易跟踪它的方式构建,这将引入额外的头痛。
您需要在IIFE中传递a
作为参数。
(function(parameter){
// «parameter» contains the given value.
// parameter = "Some value".
})("Some value");
像这样:
var a = 2; // Variable declaration in the global scope.
(function(a) {
a += 3;
// I want `a` to be 5
console.log(a); // Prints the current value in the local scope.
})(a); // The parameter: var a = 2;
console.info(a); // Prints the current value in the global scope.
// I want `a` to be 2
由于这是一个立即调用的函数表达式,因此它的作用域与在它之外编写的代码完全不同。如果不以某种方式传递参数(无论是直接在执行或使用bind时),或者更改函数,使其作用域与所要的var a定义的作用域相同,则无法完成您所要求的操作。
话虽如此,也许你可以返回一些方法,将a
设置为适当的值。
http://jsbin.com/vazequhigo/edit?js,控制台
var a = 2;
w = (function(){
var setA = function(val) {
a = val;
}
var addA = function(val) {
a += val;
return a;
}
var a = 0;
return {
setA: setA,
addA: addA,
};
})();
w.setA(a);
console.log(w.addA(3));
相关文章:
- 使用 Javascript 更改阴影而不使用 jQuery
- 这是JavaScript中变量阴影的一个例子吗?
- Javascript设置&阴影属性(原型链)
- 绘制正态分布曲线,左下角区域在 javascript 中带有阴影
- 框阴影在由 JavaScript 添加时不会生效
- 如何访问原型上的阴影 JavaScript 对象字段
- 如何通过javascript设置框阴影
- 使用 JavaScript 计算逼真的框阴影
- HTML/Javascript - 提交表单并在阴影框中显示结果
- Javascript 原型属性阴影
- 变量的JavaScript阴影会引发异常
- Javascript-准确获取元素框阴影细节
- Javascript Three.JS阴影贴图不工作
- 如何使用JavaScript取消设置CSS文本阴影
- 如何通过JavaScript获取HTML阴影元素的尺寸
- 六边形阴影CSS javascript
- 如何从highcharts JAVASCRIPT中移除悬停时的外部阴影
- 如何使用.style JavaScript属性添加css框阴影
- 使用javascript/jquery访问阴影DOM属性(聚合物)
- 带有初始化的JavaScript阴影