Javascript 能言善辩。第四章。计算相关性。最终分析-[变量递归和in运算符]第2部分
我正在完成第4章雄辩的Javascript中第一个示例的结尾。这是完整的代码,这是我有疑问的最后一部分,但我附上了第一部分作为参考Javascript 能言善辩。第四章。计算相关性。最终分析-[变量递归和in运算符]第2部分,javascript,Javascript,我正在完成第4章雄辩的Javascript中第一个示例的结尾。这是完整的代码,这是我有疑问的最后一部分,但我附上了第一部分作为参考 var journal = []; function addEntry(events, didITurnIntoASquirrel) { journal.push({ events: events, squirrel: didITurnIntoASquirrel }); function phi(table) { return (ta
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中。在本例中,如果确实缺少该成员,下一行将创建该成员。哇,非常感谢。