前端小白,關於在函式裡面使用陣列的push()方法,結果資料永遠只有一條

weixin_39092312發表於2019-02-23

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
<div><input type="text" id="time"></div>
<div><input type="text" id="task"></div>
<div οnclick="save()">儲存到本地</div>
 <script>

  function save(){
      var jsonArray=[];
     var jsonData={"time":"","task":""};
     jsonData.time=document.getElementById("time").value;
     jsonData.task=document.getElementById("task").value;
   console.log(jsonData);
     jsonArray.push(jsonData);
     console.log(jsonArray);
  }
一開始樓主想用呼叫函式實現點選一下,往陣列裡新增一條Json
資料,結果發現陣列裡的資料和長度根本不會改變,想了半天。後來才發現是全域性變數和區域性變數的原因,因為我的陣列是定義在函式裡面,就成了區域性變數,所以,push方法是成功了,但因為是區域性變數,所以,每次呼叫函式就會執行 var jsonArray=[];該語句清空陣列資料,所以資料永遠只有一條。如果把 var jsonArray=[];該語句放到函式外面那就沒有問題了。

相關文章