JavaScript 全局变量声明

JavaScript global variables declaration

本文关键字:声明 全局变量 JavaScript      更新时间:2023-09-26

以下脚本工作正常,尽管我需要做一些修改。在每个函数中,我都获得了不同公式所需的值。但是,我倾向于在不同的函数中复制相同的代码行。

前任。

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. 当值更改时更新变量
  2. 使用始终返回正确值的函数

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);