javascript - 为什么return data 之后,显示data is not defined?
过去多啦不再A梦
过去多啦不再A梦 2017-05-19 10:41:05
0
5
863
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梦

全部回复(5)
仅有的幸福

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

大家讲道理

你需要getData获取到值,然后才能使用它。

洪涛

前面只是定义了函数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表示传递给函数的参数

我想大声告诉你

因为你的data是在函数内用var申明嗯,是函数的局部变量,不可以在函数外直接调用,虽然你可以通过> return 的方式将data的数据返回出去,但是你在外边调用该函数时就得设置一个变量接受返回值

洪涛

...这个问题。

在函数外面应该这么写:alert(getDtata().length),至于为什么,先把基础弄清楚吧。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板