从全局范围中删除var

remove var from global scope

本文关键字:删除 var 范围 全局      更新时间:2023-09-26

在这个例子中,我有两个操作:

  1. 当你添加用户数量时,它将根据输入中的价格自动计算,总金额为

  2. 当您已经添加用户数量>计算总金额>如果您在输入总金额时单击EUR,则总金额将转换为欧元。

所以,每件事都很好——但我不喜欢"usesQuantity"具有全局范围!如何使其本地化并保存工作版本http://jsfiddle.net/gb2447jd/5/

尝试过类似的东西

$('#user-quantity').keyup(function(){
    var userQuantity = parseInt($(this).val());
    if( userQuantity >=1 && userQuantity <=200){
      valid(userQuantity);
    } else {
      $('#total-sum').val("error");
    }
  });

  $('#usd').on('click', function(){
    $('#eur').removeClass('greenChacked');
    $(this).addClass('greenChacked');
    valid(userQuantity);
  });
  $('#eur').on('click', function(){
    $('#usd').removeClass('greenChacked');
    $(this).addClass('greenChacked');
    valid(userQuantity);
  });
  $('#usd').trigger('click');
  function valid(userQuantity){
    if( $('#usd').hasClass('greenChacked') ){
      var usdCurr = userQuantity * 10 + 'doll';
      $('#total-sum').val(usdCurr);
    }
    if( $('#eur').hasClass('greenChacked') ){
      var eurCurr = userQuantity * 5 + 'eur';
      $('#total-sum').val(eurCurr);
    }
  }

您可以将代码封装在立即调用的函数中

(function () {
    var userQuantity;
    $(document).ready(function () {
        //rest of your code 
    };
}());

点击此处了解更多信息。

在函数中定义变量(userQuantity)。它将通过闭包提供给其他函数和回调,而不具有全局作用域。看看这个新的jsFiddle。

新代码的开头如下:

$(document).ready(function () {
    var userQuantity;
    $('#user-quantity').keyup(function () {
        userQuantity = parseInt($(this).val());
        if (userQuantity >= 1 && userQuantity <= 200) {
            setCurrency();
        } else {
            $('#total-sum').val("error");
        }
    });