JavaScript 全局变量声明
JavaScript global variables declaration
以下脚本工作正常,尽管我需要做一些修改。在每个函数中,我都获得了不同公式所需的值。但是,我倾向于在不同的函数中复制相同的代码行。
前任。
function one(){ var v1= document.getElementById('one').value; }
function two(){ var v1= document.getElementById('one').value; }
完整代码
我想声明所有变量一次,而不是只使用特定函数所需的变量。如果我在顶部声明它们,而不是一旦调用它们,它们仍然保留原始值,因此如果更改,我需要将该值更新为当前值。
如果你像在小提琴中那样做,你的代码将很难阅读。
而是做
var myVars;
window.onload=function() {
myVars = {
'list_price': document.getElementById('list_price'),
'negotiated': document.getElementById('negotiated'),
.
.
'lease_payment': document.getElementById('lease_payment')
}
现在你可以做
var price = myVars.list_price.value;
或者添加一个函数
function getVal(id) {
var val = document.getElementById(id).value;
if (val =="" || isNaN(val)) return 0;
return parsetInt(val,10);
}
现在你可以做
var price = getVal("list_price");
mplungjan的解决方案是一个很好的解决方案。如果您完全担心全局变量泄漏到窗口范围,请将代码包装在立即调用的函数表达式中以防止这种情况发生:
(function(){
// code goes here
}());
有两种方法可以做到这一点:
- 当值更改时更新变量
- 使用始终返回正确值的函数
1) 您可以为 change
事件或更改全局变量的 keyup
事件添加侦听器:
// save initial value
var val = document.getElementById('one').value;
// update the value when input is changed
addEventListener(document.getElementById('one'), 'change', function() {
val = document.getElementById('one').value;
});
console.log(val);
2) 您可以使用始终返回当前值的函数:
var val = function() { return document.getElementById('one').value; };
console.log(val());
2b)如果你讨厌括号,你可以定义一个使用上面函数作为getter的属性:
Object.defineProperty(window, 'one', {
get : function() { return document.getElementById('one').value; }
});
console.log(one);
相关文章:
- 如何将变量声明为全局变量
- 如何将变量声明为全局变量?用case foreach?Javascript
- 返回语句后的函数声明全局变量不会被覆盖
- 为什么Javascript代码打印'未定义'即使变量被声明为全局变量
- JavaScript 全局变量声明
- 如何从选择菜单选项动态声明全局变量
- 让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围
- 声明全局变量
- 由全局范围内的 Web 应用程序声明的全局变量
- 是否有任何选项可以在煎茶触摸中声明全局变量
- 如何将值从一个函数传递到另一个具有对象的函数,而无需在 JS 中声明全局变量
- 如何在不声明全局变量的情况下将值从一个函数传递到另一个函数?
- 如何从函数内部声明全局变量
- 在页面初始化时声明全局变量
- 如何在javascript中正确声明全局变量
- 是否可以在Node/Express 4.0中声明全局变量?
- Javascript:在一个脚本中声明全局变量,并在另一个脚本中使用它
- 如何使用JS声明全局变量
- 在 .js 文件中声明全局变量是否不好
- 如何在外部js文件中声明全局变量?