this 的理解
2024-08-24 14:09:39
function foo(num){
console.log("foo:",+num);
this.count++
}
foo.count =0
for (var i=0; i<10;i++){
if (i>5){
foo(i);
}
}
console.log(foo.count)
在非严格模式下 foo.count应该最后输出的是0,和我们想象的不一样,当然在严格模式下this.count 报错
为什么呢?foo函数中的this的count 和 foo.count不是同一个值?
接下来我直接console.log(count),结果出现了NaN,哦,原来count是全局的,对了,这就是前面说的this是在运行的时候进行绑定的,并不是在编写的时候进行绑定的,
它取决于上下文调用的各种条件,this 的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。
当一个函数被调用时,会创建一个活动记录,这个纪录会包含函数在哪里被调用,函数的调用方法,传入的参数等信息,this 就是纪录其中的一个属性,在哪里被调用也就是取决于函数的执行过程,this 实际上是在函数调用时发生的绑定,它指向什么完全取决于函数在哪里被调用
最新文章
- 巧用transform实现HTML5 video标签视频比例拉伸
- 关于AJAX 的交互模型、交互流程及代码示范
- 【C#进阶系列】11 事件
- 前端面试库_JS部分_02
- TopCoder 603 div1 &; div2
- Codeforces Round #375 (Div. 2) ABCDE
- c++如何生成随机数
- cocos2D(五岁以下儿童)---- CCNode
- 如何使用RSYNC搭建备份服务器
- 一些内存模型、并发、netty知识点的记录
- C++ 头文件系列(set)
- 随便说说 post-processing
- JDBC 查询
- swagger 常用注解说明
- Mess it up!搞乱代码
- springboot+mysql实现quartz集群搭建
- 030 RDD Join中宽依赖与窄依赖的判断
- Java枚举根据key获取value
- 20145101《Java程序设计》第8周学习总结
- kubernetes基础概念