浏览器学习笔记-11 settimeout
settimeout
使用
语法
setTimeout(code,millisec)
参数 | 描述 |
---|---|
code | 必需。要调用的函数后要执行的 JavaScript 代码串。 |
millisec | 必需。在执行代码前需等待的毫秒数。最低延时是 4ms |
this
超时调用的代码都是在全局作用域中执行的,因此函数中this的值在非严格模式下指向window对象,在严格模式下是undefined
1.
setTimeout("alert(this)", 1); //alert: [object Window]
2.
var obj = {
say : function () {
setTimeout(function () {
console.log('setTimeout:'+this);
},0);
},
hello : function () {
console.log('hello:'+this);
}
};
obj.say(); //setTimeout:[object Window]
obj.hello(); //hello:[object Object]
3.
var hello = function () {
alert( this );
}
var obj = {
say : function () {
setTimeout( hello ,1 );
}
};
obj.say(); //[object Window]
4.
var value = 33;
function Foo() {
var value = 42;
setTimeout(function() {
alert(value);
alert(this.value)
}, 500); // 先输出 42 然后输出33 这里的this是第二个this
}
new Foo();
5.
var obj = {
name: 'hutaoer',
say: function() {
var self = this;
setTimeout(function(){
alert(self); // 输出 object ,指向obj
alert(this); // 第二个this,指向window,我心永恒,从未改变
alert(self.name) // 输出 hutaoer
}, 0)
}
}
obj.say();
6.
var value=33;
function Foo() {
var value = 42;
function ff() {
alert(value); // 42
alert(this.value); // 33
}
setTimeout(ff, 500); // 先后输出 42 33
}
Foo(); // 直接执行,跟普通函数没有区别
一、setTimeout中的延迟执行代码中的this永远都指向window
二、setTimeout(this.method, time)这种形式中的this,即上文中提到的第一个this,是根据上下文来判断的,默认为全局作用域,但不一定总是处于全局下,可能处于对象内部。
三、setTimeout(匿名函数, time)这种形式下,匿名函数中的变量也需要根据上下文来判断,根据函数作用域,有函数的位置的词法作用域来确定。
标签:
总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构