JS 闭包问题

2023-11-14

var result = [];
function foo1() {
    var i = 0;
    for (; i < 3; i = i + 1) {
        result[i] = (function (j) {
            return function () {
                console.log  ("log==111=>" + j);
            };
        })(i);
    }
};
foo1();

result[0]();  //  0
result[1]();  //  1
result[2]();  //  2
//============================================================================================


var result = [];
function foo() {
    var i = 0;
    for (; i < 3; i = i + 1) {
        result[i] = function () {
            console.log  ("log===>" + i);
        }
    }
};
foo();
result[0]();  //  3
result[1]();  //  3
result[2]();  //  3

//============================================================================================

var window = {};//模拟浏览器中的window
window.export = {};

(function () {
    var _userId = 23492;
    var _typeId = 'item';
    var export1 = {};

    function converter(userId) {

        return +userId;
    }


    export1.getUserId = function () {
        return converter(_userId);
    }
    export1.
        getTypeId = function () {
        return _typeId;
    }

    window.export = export1;
})();

console.log("====>,,,,,," + window.export.getUserId());

//============================================================================================

var a = 10;
(function () {
    var b = 20;
})();
console.log(a);    //     10     
//console.log(b);    //     error,     b     in     not     defined


for (var item     in     {a: 1, b: 2, c: 3,d:3}) {
    console.log(item);
    var n=6;
}

console.log(item+n);//没有块级 作用域 所以还能访问的到

eval("var a  =  1;");


//============================================================================================
function outer() {
    var i = 1;
    //var func = new Function("console.log(typeof m);");//new Function()这样的拿不到上层 的作用域 链 ,而下边这种就能拿到
    var func = function () {
        console.log(typeof i);
    };
    func();           //      undefined
}
outer();

//============================================================================================
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS 闭包问题 的相关文章

随机推荐

  • 用Ai描摹图片

    用Ai描摹图片 陈子龙 2019 2 4 用ai来描摹这张图片 先用钢笔工具把哆啦A梦的外面黑的地方钩画出来 并上色 然后在把哆啦A梦的身体蓝色的地方用钢笔描出来 在把它白色的部位用钢笔描出
  • C语言中堆内存的申请和使用

    在编程过程中 有时需要使用大量数据 此时可以使用堆内存来方便存储和管理这些数据 堆内存是由程序员手动进行申请 释放的内存 它的空间非常大 但如果在申请后没有释放 会导致内存泄露 关于堆内存的常用函数 1 void malloc size t
  • 一文读懂微服务架构设计

    一 前言 微服务 MicroServices 是一种架构风格 一个大型复杂软件应用由多个微服务和前端展示层组成 系统中的各个微服务可被独立部署 各个微服务之间是松耦合的 每个微服务仅关注于完成一件任务并很好地完成该任务 在所有情况下 每个任
  • 组合预测模型

    组合预测模型 ARIMA CNN LSTM时间序列预测 Python 目录 组合预测模型 ARIMA CNN LSTM时间序列预测 Python 预测结果 基本介绍 程序设计 参考资料 预测结果 基本介绍 ARIMA CNN LSTM是一种
  • Django运行服务报NameError: name ‘os‘ is not defined-已解决

    这里调用了os模块 但是文件头并没引用os模块 解决办法 在settings py文件头加上 import os
  • 【MySQL】解决JDBC无法成功连接MySQL5.7的问题

    写在前面 笔者的个人主页近期升级了一下服务器 以前的VPS确实不行了 然后也就顺便用了最新版本也就是MySQL5 7 但是这个版本呢升级了很多安全策略 网上的资料 中文 也相对较少 之前因为安装这个MySQL5 7已经折腾了我大半天 这里附
  • CSS深入理解之line-height

    以下文字整理自慕课网 张鑫旭的 CSS深入理解之line height 我看到不时有人点赞收藏这篇文章 我想应该也有很多人是对line height 和vertical align 困惑吧 你们可以去看下这篇文章 上面有我学习vertica
  • texstudio更新记录

    Ubuntu20 04 更新TexStudio 本着不折腾不舒服的原则 准备更新texstudio 原版本2 12 22 texstudio网站上是没找到Ubuntu的 只有xubuntu版本的安装包 既然推荐用ppa方式 那就试试 点开紫
  • Windows Server间文件实时备份(syncthing) ---带历史版本“后悔药”

    一 概念简介 syncthing 一款开源免费的数据同步工具 基于P2P的跨平台文件同步工具 通过tcp建立设备连接 再通过TLS进行数据安全传输 支持公网与局域网搭建 支持单双向同步与历史版本控制 后悔药 支持Android Linux
  • go 进阶 三方库之 gorm

    目录 一 初始化 二 增删改查示例 Save与Update区别 GORM中的钩子 GORM Context支持 GORM 与锁 GORM的预加载Preload与Joins 查询时优雅的处理动态条件 分页 gorm io plugin扩展包
  • 【DFS】1905. 统计子岛屿

    1905 统计子岛屿 解题思路 如果两个岛屿的点不一样 说明grid2这个岛屿一定不是子岛屿 然后淹没i j 以及相邻的土地 现在grid2 剩下的岛屿 全部都是子岛屿 计算岛屿的数量 dfs计算陆地数量 class Solution pu
  • java类本身自己,如何在数据库中使用自己的 Java 类?

    如何在数据库中使用自己的 Java 类 Java 语言比 SQL 更强大 Java 是一种面向对象的语言 因此它的指令 源代码 采用类的形式 要在数据库中执行 Java 应在数据库外编写 Java 指令并在数据库外将它们编译为已编译的类 字
  • 2022秋招笔试加面经合集,不区分公司,不定期更新

    9 9日mark 秋招陆陆续续开始 我自己的定位首先是国企然后是互联网企业 这里把面试和笔试整理下 攒人品 废话不多说开始 首先说一下简历吧 很多同学可能投后台 测试 算法都是一个简历 这样对自己来说是很方便 但是用通用的简历就会导致面试官
  • keil 4单片机程序的debug调试

    1 单击keil4窗口的调试按钮快捷图标 进入到软件模拟调试模式 如图所示 在软件调试模式下 可以设置断点 单步 全速 进入某个函数内部运行 还可以查看变量的变化过程 模拟硬件IO口电平变化 查看代码执行时间等 先了解一下调试按钮的功能 其
  • KMP算法详解(参考代码随想录)

    KMP算法详解 参考代码随想录 KMP的经典思想 当出现字符串不匹配时 可以记录一部分之前已经匹配的文本内容 利用这些信息避免从头再去做匹配 前缀表 前缀表是用来回退的 它记录了模式串与主串 文本串 不匹配的时候 模式串应该从哪里开始重新匹
  • 【每日一学】浮动IP

    在集群或者主备双机场景 对服务使用者而言期望的只有一个IP或域名 这个时候需要的就是浮动IP 一 主备实现 利用单个网卡绑定多个ip地址的技术和crontab自动执行技术 为主机的网卡多绑定一个静态ip 如124 158 26 32 这个地
  • MySQL锁定状态查看相关命令

    1 SHOW PROCESSLIST 显示哪些线程正在运行 只列出前100条 SHOW FULL PROCESSLIST 列出所有线程信息 如果您有SUPER权限 您可以看到所有线程 否则 您只能看到您自己的线程 也就是 与您正在使用的My
  • SpringBoot项目在logback.xml中读取配置中的日志路径问题

    一 问题 在SpringBoot项目 使用logback xml中配置日志的存储位置时 读取application properties或application yml中配置的路径 在logback xml中引用如下
  • PCB 经验

    1 CPU或是关键的IC放在PCB的board中间 目的是有足够空间布线 2 CPU和内寸之间走线一般要做等长走线 长度也要考虑是否够绕线 3 时钟芯片尽量靠近CPU 并远离其它敏感信号 4 CPU的复位电路尽量远离时钟以及其它高速信号 5
  • JS 闭包问题

    var result function foo1 var i 0 for i lt 3 i i 1 result i function j return function console log log 111 gt j i foo1 re