Почему переменная не видна для функции?

111
02 января 2020, 19:40

При попытке протестировать функцию

alert(Test.tree('my first tree ever!', function(){
  Test.assertQuals(numinbits(7), '101', 'Первый тест');
}));

Исходный код:

  Test.tree = function(name, func) {
    if((name && func) == null) return this.treeList;
    var tr = {
      id: this.treeIdentifier + 1,
      name: name,
      errors: [],
      errorsCounter: 0
    }
    func();
    this.treeList.push(tr);
    return `There\'s was ${tr.errorsCounter} errors at all, see tree for more information`;
  };
  Test.assertQuals = function(func,result,disc) {
    var resultfunc = func;
    if(result != resultfunc) {
      tr.errors.push([disc,'The ${result} was expected, the ${resultfunc} was received']);
      tr.errorCounter += 1;
      return false;
    }else{
      return true;
    }
  };
function numinbits(num) {
  let result = '';
  while(num >= 1) {
    let ost = num % 2;
    result = Math.floor(ost) + result;
    num = num / 2;
  }
  return result;
}

Почему-то переменная tr не видна функции assertQuals, хотя эта функция объявлена в tree, и переменные этой функции должны быть видны assertQuals.

Ошибка: ReferenceError: tr is not defined
    at Function.Test.assertQuals
Answer 1

Потому что это локальная переменная внутри функции Test.tree.

  Test.tree = function(name, func) {
    this.tr = {
      ...
    };
    if((name && func) == null) return this.treeList;
    ...
  };
  Test.assertQuals = function(func,result,disc) {
    var resultfunc = func;
    if(result != resultfunc) {
      this.tr.errors.push(...
      this.tr.errorCounter ...
      ...
  };
READ ALSO
AssertionError [ERR_ASSERTION]: Task never defined: Task never defined: app/scss/**/*.scss

AssertionError [ERR_ASSERTION]: Task never defined: Task never defined: app/scss/**/*.scss

Появилась проблема с запуском таска, видимо проблема в непонимании, gulp4, но не понимаю с чем связана ошибкаgulpfile

136
Проблема добавления элемента через appendChild

Проблема добавления элемента через appendChild

Добрых времени суток! Проблема в следующем, возникла задача добавить созданный span в каждый 2-ой(!) элемент в блоке divtest, как это можно сделать?...

148
Как получить значение числа?

Как получить значение числа?

Как получить значение из числа?

166