javascript - Mengapa data tidak ditakrifkan muncul selepas data pemulangan?
过去多啦不再A梦
过去多啦不再A梦 2017-05-19 10:41:05
0
5
859
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

Sudahreturn data了,外部的dataMengapa ia tidak boleh dipanggil?

过去多啦不再A梦
过去多啦不再A梦

membalas semua(5)
仅有的幸福

Data yang anda maksudkan ialah pembolehubah tempatan yang ditakrifkan dalam kaedah getData dan tidak boleh digunakan di luar Anda boleh menggunakan pembolehubah untuk menerima nilai pulangan
var myData =getData()

大家讲道理

Anda perlu mendapatkan nilai dengan getData sebelum anda boleh menggunakannya.

洪涛

Fungsi getData baru sahaja ditakrifkan sebelum ini, tetapi tidak dipanggil
Jika dipanggil, pembolehubah perlu digunakan untuk menerima nilai pulangan, seperti:
var datas = getData();

data ialah pembolehubah tempatan dalam fungsi dan tidak boleh diakses di luar fungsi. Akses luaran sebenarnya adalah pembolehubah data yang ditakrifkan secara luaran, ia akan digesa tidak ditakrifkan
Senarai yang digunakan dalam fungsi getData tidak ditakrifkan dalam fungsi, jadi ia harus ditakrifkan terbaik untuk menukarnya kepada parameter fungsi:
fungsi getData(senarai){

...

}
Panggil:
var datas = getData(senarai);

Selain itu, apabila terdapat pembolehubah senarai luaran, parameter getData juga merupakan senarai senarai parameter digunakan di dalam fungsi, bukan senarai pembolehubah luaran.
Untuk membezakan, anda boleh menukar parameter kepada yang berbeza, seperti:
fungsi getData(listParam){

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

}
Panggilan kekal tidak berubah:
var datas = getData(list
Parameter yang digunakan semasa membuat panggilan ialah senarai pembolehubah luaran Apabila melaksanakan, senarai ditetapkan kepada listParam, dan listParam digunakan di dalam fungsi untuk mewakili parameter yang diluluskan. kepada fungsi

我想大声告诉你

Oleh kerana data anda diisytiharkan dengan var di dalam fungsi, ia adalah pembolehubah tempatan fungsi dan tidak boleh dipanggil terus di luar fungsi Walaupun anda boleh mengembalikan data data melalui > fungsi dari luar, anda mesti menetapkan pembolehubah untuk menerima nilai pulangan

洪涛

...soalan ini.

Ia sepatutnya ditulis seperti ini di luar fungsi: alert(getDtata().length Untuk sebabnya, mari kita jelaskan asasnya dahulu.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan