有没有办法可以在函数外声明变量?

时间:2021-01-06 04:04:28

标签: javascript jquery scope

有没有办法在函数外声明一个变量? $first 和 $second 似乎无法在函数之外读取它。还有 1 件事 .remove() 不起作用。

function addition(){
  let $first = parseInt($('#firstNum').val());
  let $second = parseInt($('#secondNum').val());
  $('h1').append($first + $second);
}
function subtraction(){
  let $first = parseInt($('#firstNum').val());
  let $second = parseInt($('#secondNum').val());
  $('h1').append($first - $second);
}
function multiplication(){
  let $first = parseInt($('#firstNum').val());
  let $second = parseInt($('#secondNum').val());
  $('h1').append($first * $second);
}
function division(){
  let $first = parseInt($('#firstNum').val());
  let $second = parseInt($('#secondNum').val());
  $('h1').append($first / $second);
}
function clear(){
  $('h1').remove();
}```

2 个答案:

答案 0 :(得分:1)

<块引用>

还有 1 件事 .remove() 不起作用。

您应该清除空而不是删除该元素:

$("#btnClear").on("click", function(){
  $('h1').html('');
})

此外,你应该像下面这样重构你的代码:

$("#btnSubmit").on("click", function(){
  var firstNumber = parseInt($('#firstNum').val());
  var secondNumber = parseInt($('#secondNum').val());
  var operator = $("input[name='operator']:checked").val();
  var result = 0;
  switch(operator){
    case '+':
      result = addition(firstNumber, secondNumber);
      break;
    case '-':
      result = subtraction(firstNumber, secondNumber);
      break;
    case '*':
      result = multiplication(firstNumber, secondNumber);
      break;
    case '/':
      result = division(firstNumber, secondNumber);
      break;
  }
  
  $('h1').html(result);
});
function addition(firstNumber, secondNumber){
  return firstNumber + secondNumber;
}
function subtraction(firstNumber, secondNumber){
  return firstNumber - secondNumber;
}
function multiplication(firstNumber, secondNumber){
  return firstNumber * secondNumber;
}
function division(firstNumber, secondNumber){
  return firstNumber / secondNumber;
}

$("#btnClear").on("click", function(){
  $('h1').html('');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" id ="firstNum" >
<input type="text" id ="secondNum" >
<a id="btnSubmit">Submit</a> 
<br>
<a><input name="operator" value = "+" type = "radio" checked/> + </a> <br>
<a><input name="operator" value = "-" type = "radio"/> - </a> <br>
<a><input name="operator" value = "*" type = "radio"/> * </a> <br>
<a><input name="operator" value = "/" type = "radio"/> / </a> <br>
Result: <h1></h1>
<a id="btnClear">Clear</a> 

答案 1 :(得分:0)

您需要在函数之外定义变量。

变量可以在当前作用域+内部作用域中读取,但不能在定义它们的外部作用域中读取。

let $first, $second;

function addition() {
  $first = parseInt($('#firstNum').val());
  $second = parseInt($('#secondNum').val());
  $('h1').append($first + $second);
}

MDN 有一篇很好的文章解释了 JavaScript 中的作用域:https://developer.mozilla.org/en-US/docs/Glossary/Scope

相关问题