Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 能言善辩。第四章。计算相关性。最终分析-[变量递归和in运算符]第2部分_Javascript - Fatal编程技术网

Javascript 能言善辩。第四章。计算相关性。最终分析-[变量递归和in运算符]第2部分

Javascript 能言善辩。第四章。计算相关性。最终分析-[变量递归和in运算符]第2部分,javascript,Javascript,我正在完成第4章雄辩的Javascript中第一个示例的结尾。这是完整的代码,这是我有疑问的最后一部分,但我附上了第一部分作为参考 var journal = []; function addEntry(events, didITurnIntoASquirrel) { journal.push({ events: events, squirrel: didITurnIntoASquirrel }); function phi(table) { return (ta

我正在完成第4章雄辩的Javascript中第一个示例的结尾。这是完整的代码,这是我有疑问的最后一部分,但我附上了第一部分作为参考

var journal = [];

function addEntry(events, didITurnIntoASquirrel) {
  journal.push({
    events: events,
    squirrel: didITurnIntoASquirrel
  });

function phi(table) {
  return (table[3] * table[0] - table[2] * table[1]) /
    Math.sqrt((table[2] + table[3]) *
              (table[0] + table[1]) *
              (table[1] + table[3]) *
              (table[0] + table[2]));
}

function hasEvent(event, entry) {
  return entry.events.indexOf(event) != -1;
}

function tableFor(event, journal) {
  var table = [0, 0, 0, 0];
  for (var i = 0; i < journal.length; i++) {
    var entry = journal[i], index = 0;
    if (hasEvent(event, entry)) index += 1;
    if (entry.squirrel) index += 2;
    table[index] += 1;
  }
  return table;
}

function gatherCorrelations(journal) {
  var phis = {};
  for (var entry = 0; entry < journal.length; entry++) {
    var events = journal[entry].events;
    for (var i = 0; i < events.length; i++) {
      var event = events[i];
      if (!(event in phis))
        phis[event] = phi(tableFor(event, journal));
    }
  }
  return phis;
}

var correlations = gatherCorrelations(JOURNAL);
console.log(correlations.pizza);
我的问题是:

中.事件的目的是什么

var事件=日记账[分录].事件

它是否将自身称为递归?如果是,为什么?难道我们就不能拥有journal[entry]并且函数将从tableFor函数调用该条目来运行吗?它是否会调用AddEntry函数,其中事件变量是以重要方式建立的

你的目的是什么!网络钓鱼中的事件。 我将其理解为:若phi中的事件为真,则将其翻转为非真,然后触发必要的phi计算。难道不应该更合理地消除这个问题吗!不等于或完全不等于那段代码?如果我们已经有一个for循环,那么函数不会在它上运行直到日志的最大长度并停止吗

var events=journal[entry]。事件;您将从数组日志中索引项处的对象获取events对象,并将其分配给名为events的临时变量

这样做只是为了方便,所以您不必一直引用日志[entry]。事件。例如,后面有一行:

var event = events[i];
这将成为:

var event = journal[entry].events[i];
没有对临时变量赋值

如果!事件在phis中它正在测试对象phis是否没有包含在变量event中的名称的属性。如果对象尚未具有该属性,则会将其添加到下一行:

phis[event] = phi(tableFor(event, journal));

下面是一段非常简单的代码片段,有助于理解in运算符:

var foo = {};
console.log("bar" in foo);    // logs "false" because foo doesn't have a "bar" property
foo.bar = 1;                  // or foo["bar"] = 1;
console.log("bar" in foo);    // logs "true" because foo now has a "bar" property
中.事件的目的是什么

var事件=日记账[分录].事件

本声明的目的符合方便和经济两个概念。调用时,对象深度的每个级别都会增加总的调用时间。当然,现代浏览器在展平对象变量堆栈方面做了很多工作,但如果您从逻辑上考虑,任何对object1.object2[Memeber3].object4的调用都必须经过4个步骤才能获得值本身。将值展平到本地对象更经济。其次,代码的可读性和可维护性得到了增强,因为您没有额外的日志[entry]。塞住你的表情。一般来说,如果要在块中多次使用对象的成员,则应创建该成员的局部变量

这项研究的目的是什么

!!网络钓鱼中的事件


此评估的目的是确定特定memberevent是否不在objectphis中。在本例中,如果确实缺少该成员,下一行将创建该成员。

哇,非常感谢。