搜尋

首頁  >  問答  >  主體

javascript - 為什麼return data 之後,顯示data is not defined?

function getData() {
    var data = new Array();
  for (var i=0; i<list.length; i++) {
    var city_text = list[i].firstChild.nodeValue;
    var city = city_text.substring(0,2);    //截取字符串,从0到2,但不包括2.
    var num = list[i].lastChild.innerHTML;
    data[i] = [city,num];
    }
  alert(data.length);    //7
  return data;
}
alert(data.length);    //data is not defined

已經return data了,外部的data為何無法呼叫呢?

过去多啦不再A梦过去多啦不再A梦2754 天前869

全部回覆(5)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-19 10:43:05

    你所說的data是定義在getData方法中的一個局部變量,在外面是不能使用的,你可以使用一個變量接受返回值
    var myData =getData()

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:43:05

    你需要getData取得到值,然後才能使用它。

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-19 10:43:05

    前面只是定義了函數getData,但沒有呼叫;
    呼叫的話需要用一個變數接收回傳值,如:
    var datas = getData();

    data是函數中的局部變量,在函數外部不能存取。外部存取的其實是在外部定義的data變量,外部沒有定義時,就提示not defined;
    getData函數中使用的list,函數裡面沒有定義,應該是在函數外定義的,最好改成函數參數:
    function getData(list){

    ...

    }
    呼叫:
    var datas = getData(list);

    另外,在外部有list變數的情況下,getData的參數也是list,在函數內部使用的是參數list,而不是外部的變數list。
    為了區分可以把參數改成不一樣的,如:
    function getData(listParam){

    ... // 函数内部使用listParam代替list

    }
    呼叫不變:
    var datas = getData(list);
    呼叫時使用的參數是外部的變數list,執行的時候把list賦值給listParam,在函式內部用listParam表示傳遞給函式的參數

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:43:05

    因為你的data是在函數內用var申明嗯,是函數的局部變量,不可以在函數外直接調用,雖然你可以通過> return 的方式將data的數據返回出去,但是你在外邊調用該函數時就得設定一個變數接受返回值

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-19 10:43:05

    ...這個問題。

    在函數外面應該這麼寫:alert(getDtata().length),至於為什麼,先把基礎弄清楚吧。

    回覆
    0
  • 取消回覆