javascript - 如何阻止我的函数返回 "Reference error: (...) is not defined"

标签 javascript reference undefined

我得到了这段代码,它返回了引用错误,但我不知道为什么,我看过很多关于引用错误的问答,但我仍然找不到它。如有任何帮助,我们将不胜感激。

提前致谢,愿原力与你同在。

我的代码:

 var data = '[{"name":"node1","id":1,"is_open":true,"children":[{"name":"node2","id":6,"children":[{"name":"child3","id":7}]},{"name":"child1","id":2}]}]';

 var dadSon = [];

 (function printDadSon(data, parent) {
   if (!data) return;
   for (var i = 0; i < (data.length); i++) {
     if (parent && parent != 'undefined') {
       console.log('Dad: ' + parent + ' & Son: ' + data[i].id);
       dadSon += ('Dad: ' + parent + ' & Son: ' + data[i].id);
     }

     printDadSon(data[i].children, data[i].id);

   }
 })(JSON.parse(data));

 printDadSon(data);

最佳答案

您只是在立即调用的命名函数表达式的范围内声明该函数。 因此,当您调用它之后,它在线路上不可见。

您可以选择按如下方式声明函数

 var data = '[{"name":"node1","id":1,"is_open":true,"children":[{"name":"node2","id":6,"children":[{"name":"child3","id":7}]},{"name":"child1","id":2}]}]';

 var dadSon = [];

 function printDadSon(data, parent) {
   if (!data) return;
   for (var i = 0; i < (data.length); i++) {
     if (parent && parent != 'undefined') {
       console.log('Dad: ' + parent + ' & Son: ' + data[i].id);
       dadSon += ('Dad: ' + parent + ' & Son: ' + data[i].id);
     }

     printDadSon(data[i].children, data[i].id);

   }
 }
 printDadSon(JSON.parse(data));

但是你不需要在后面调用它,后面的行是无用的(并且你的代码是错误的,因为你没有解析 JSON),只需使用

 var data = '[{"name":"node1","id":1,"is_open":true,"children":[{"name":"node2","id":6,"children":[{"name":"child3","id":7}]},{"name":"child1","id":2}]}]';

 var dadSon = [];

 (function printDadSon(data, parent) {
   if (!data) return;
   for (var i = 0; i < (data.length); i++) {
     if (parent && parent != 'undefined') {
       console.log('Dad: ' + parent + ' & Son: ' + data[i].id);
       dadSon += ('Dad: ' + parent + ' & Son: ' + data[i].id);
     }

     printDadSon(data[i].children, data[i].id);

   }
 })(JSON.parse(data));

第二个版本的优点是它不会用您不需要的函数声明污染外部作用域。

关于javascript - 如何阻止我的函数返回 "Reference error: (...) is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808534/

相关文章:

javascript - 将 Vue.js 页面与 WordPress 集成?

javascript - 从数组中过滤 NaN

PHP fatal error : Call to undefined function?

c++ - 通过不可复制的类

java - 获取 Wicket.Event 对于 wicketAjaxGet() 是未定义的

Javascript 优化,从哪里开始?

javascript - 在url中调用变量js

javascript - 在 p5js 中重置草图

function - 在 Rust 中实际需要 move 到函数的情况

c++ - 指针c++解释