片段1

var anum = 666;
function funcTest1(){
    var b = anum * 2;
    var anum = 6;
    var c = anum / 2;
    console.log(b);//NAN,因为anum指向undefined
    console.log(c);
}
funcTest1();

片段2

//没进funcTest2
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
console.log(window.num + myObj.num);//11 + 13 = 24
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
myObj.funcTest2();//进funcTest2,this指向myObj,但没进return。
console.log(window.num + myObj.num);//11 + 13*23 = 310
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
myObj.funcTest2()();//先进funcTest2,this指向myObj,后进return,this指向window。
console.log(window.num + myObj.num);//11*19 + 13*23 = 508
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
myObj.funcTest2();//进funcTest2,this指向myObj,但没进return。
console.log(window.num + myObj.num);//11 + 13*23 = 310
myObj.funcTest2()();//先进funcTest2,this指向myObj,后进return,this指向window。
console.log(window.num + myObj.num);//11*19 + 13*23*23 = 7086
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
var tcal = myObj.funcTest2();//进funcTest2,this指向myObj,但没进return。
console.log(window.num + myObj.num);//11 + 13*23 = 310
tcal();//没进funcTest2,直接进return,this指向window。
console.log(window.num + myObj.num);//11*19 + 13*23 = 508
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
var cal = myObj.funcTest2;
var tcal = cal();//进funcTest2,this指向window,但没进return。
console.log(window.num + myObj.num);//11*23 + 13 = 266
tcal();//没进funcTest2,直接进return,this指向window。
console.log(window.num + myObj.num);//11*23*19 + 13 = 4820
window.num = 11;
var myObj = {
    num:13,
    funcTest2:function(){
        this.num *= 23;
        return function(){
            this.num *= 19;
        }
    }
};
var cal = myObj.funcTest2;
var tcal = cal();
myObj.funcTest2();//进两次funcTest2,this第1次指向window,第2次指向myObj,但没进return。
console.log(window.num + myObj.num);//11*23 + 13*23 = 552
tcal();//没进funcTest2,直接进return,this指向window。
console.log(window.num + myObj.num);//11*23*19 + 13*23 = 5106

运行程序,解读this指向---case2的更多相关文章

  1. 操作系统篇-hello world(免系统运行程序)

     || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...

  2. windows服务编写和“以管理员运行”程序的方法

    本文将首先解释如何 创建 一个定期查询可用物理内存并将结果写入某个文本文件的服务.然后指导你完成生成,安装和实现服务的整个过程. 第一步:主函数和全局定义 首先,包含所需的头文件.例子要调用 Win3 ...

  3. python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统

    python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统 引子 python是什么? 什么是编程语言?为何要有编程语言? 什么是编程?什么是程序?什么是进程?为何要编程? 计算机基础 ...

  4. CYPEESS USB3.0程序解读之---GPIO

    CPRESS 官方给出的SDK1.1中(目前最新的SDK),提供了大量的例程供我们开发软件的时候作参考,就像STM32的开发一样提供了库一样,但是又不是库,仅仅是参考例程. 首先看一个简单一点的GPI ...

  5. Xcode 运行程序,左侧memory 不显示内存

    运行程序后,xcode 不显示当前使用的内存情况,问题是打开了僵尸--enable zoombie Objects,关闭即可 打开 product--->SCheme-->EditSChe ...

  6. C# 管理员身份运行程序

    在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...

  7. IntelliJ IDEA 配置运行程序

    IntelliJ IDEA 对于Javaer开发来说还是很nice的,就是第一次用可能配置项有点生疏,这里就记录一下IntelliJ IDEA 配置运行程序. 1. 点击Edit Config... ...

  8. Usage: AddDimensionedImage imageFile outputFile eclipse 运行程序出错

    关于这个在eclipse中运行java程序的错,首先确认你的jdk,jre是否完整,并且与你的eclipse的位数相同,当然我相信这个错误大家应该都会去检查到. 第二个关于addDimensioned ...

  9. [原创]Win7、Win8、Win10始终以管理员身份运行程序。

    在Win7.Win8.Win10系统中,以管理员身份运行程序很麻烦,一般有以下几种方式: 1.在可执行程序或快捷方式上右键,以管理员身份运行: 2.在可执行程序或快捷方式上右键->属性-> ...

随机推荐

  1. 【自己开发】Jquery的loading插件

    经过几周的时间的开发.我的loading插件终于上线了.这个插件功能为客户提供正在等待的信息,提供优良用户体验效果. 先看效果. 原理我内部实现我不讲,特别简单. 我说调用方式和api. 首先引用jq ...

  2. 扫AR

  3. UML和模式应用2: 迭代、进化和敏捷

    1.前言 本章主要介绍迭代.敏捷开发及UP(统一过程)的基本概念 2.基本术语 Items Note 软件开发过程 描述了构造.部署及维护软件的方式 迭代开发 是一种软件开发过程的生命周期模型,依赖短 ...

  4. CONFIG_DEBUG_USER【转】

    转自:https://blog.csdn.net/adaptiver/article/details/12778621 关于CONFIG_DEBUG_USER 把menuconfig中查到的 CONF ...

  5. 汇编语言转换成c语言,或者汇编语言转换成golang的汇编,c语言转换成golang的方法

    https://github.com/minio/c2goasm http://microapl.com/asm2c/index.html               收费的 https://gith ...

  6. jenkins jar包上传maven仓库

    1      Jenkins 编译后部署至 Maven 仓库 jenkins编译后构件(如:jar包)部署至maven仓库需修改以下内容:maven 仓库配置:项目 pom 文件:本地仓库的 sett ...

  7. Oracle数据库修改LISTENER的监听端口

    背景 这又是个不作不会死的事情,自己不懂,硬搞,端口换了,后来竟然捣鼓好了.尽量少搞这些事情. 注意点 http://wallimn.iteye.com/blog/1163614 修改配置文件后,需修 ...

  8. Python-百度经纬度转高德经纬度

    import math def bdToGaoDe(lon,lat): """ 百度坐标转高德坐标 :param lon: :param lat: :return: &q ...

  9. 内核中 subsys_initcall 以及初始化标号

    今天在看内核中无线的实现时,发现一个调用 subsys_initcall(cfg80211_init);搜索一些资料: subsys_initcall 的定义在 include/linux/init. ...

  10. 注解图Annotation

    该图来源于 竹子-博客(.NET/Java/Linux/架构/管理/敏捷) http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html,感 ...