zoukankan      html  css  js  c++  java
  • this 的理解

    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 实际上是在函数调用时发生的绑定,它指向什么完全取决于函数在哪里被调用
  • 相关阅读:
    rocketMQ配置事故
    微信网页授权问题记录
    记一次Spring配置事故
    文件转换
    Java对象空间分配流程
    mysql(六)索引的数据结构
    mysql(五)查询缓存
    mysql(四)log
    从项目中加载文件
    cookie
  • 原文地址:https://www.cnblogs.com/Kellana/p/6592906.html
Copyright © 2011-2022 走看看