让我澄清一下我的问题.我不是问如何使以下代码工作.我知道你可以使用let关键字或iffe来捕获它自己的值i.我只需要澄清如何i在以下代码中访问该值.我阅读了以下博客文章,了解以下代码是如何工作的.博客文章
for (var i = 1; i <= 5; i++) {
setTimeout(function() { console.log(i); }, 1000*i); // 6 6 6 6 6
}
Run Code Online (Sandbox Code Playgroud)
作者声称代码不起作用,因为我们将变量i作为引用而不是值传递.也就是说,我们不是提供i每次迭代的值,而是将变量setTimeout作为参考提供给回调.实际上,当循环终止并且回调触发时,我们将引用变量i,它将是6.这是如何工作的?
这是我的理解.我的理解是setTimeout,当循环执行时,我们不会将任何东西"传递"到函数的回调中.我们只是设置异步调用.当闭包回调函数执行时,它们会i根据词法作用域规则查找变量.也就是说,在范围内的闭包看起来是回调结束,在这种情况下再次,因为它是在for循环完成之后完成的.
它是哪一个,函数是否i根据在每次迭代时作为引用传递的变量或者因为词法作用域而将值解析为6?
我很困惑size_t.我知道这是一个未签名的类型..正确吗?我的问题是,何时应该使用它.是否有理由将它与常规数组一起使用?我的意思是必须声明数组大小真的很大,如此巨大,以至于常规的无符号或有符号无法处理它.然后一个size_t人能够处理它吗?有人能举个例子吗?
如何向 JavaScript 中的构造函数添加属性?例如。如果我有以下功能。
function Hotel(name)
{
this.name = name;
};
var hotel1 = new Hotel('Park');
Run Code Online (Sandbox Code Playgroud)
我可以添加一个“本地”变量,该变量可以在类中本地使用,就好像它是私有的,使用关键字“this”使用相同的符号。当然它不会是私有的,因为创建的对象将能够正确使用它?
我可以做这样的事情吗?我是使用this关键字还是使用var关键字是哪一个?我在底部的函数构造函数上有示例 2
1. var numRooms = 40;
2. this.numRooms = 40;
3. numRooms : 40,
function Hotel(name)
{
this.name = name;
this.numRooms = 40;
};
Run Code Online (Sandbox Code Playgroud)
我知道如果我想要在对象构造函数中使用函数,我需要使用这个this词。正如我上面所问的那样,这对于普通变量也同样有效吗?
function Hotel(name)
{
this.name = name;
this.numRooms = 40;
this.addNumRoomsPlusFive = function()
{
return this.numRooms + 5;
}
};
Run Code Online (Sandbox Code Playgroud)