`
deng131
  • 浏览: 681277 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

闭包传入参数 window & undefined

阅读更多
大家在前端开发中对闭包应该和熟悉了,也就是几种常见的闭包方式:

1:
var fn = function(i){
      var j = i;
      return function(){ 
            return j;
      }
}


2:
(function(undefined){
     //do something
})


...

今天主要说的是2这样闭包方法中传参数问题,在各种前端js框架中经常也会见到这样代码,如果不仔细分析真的很难想到这样使用的用意。
(function(undefined){
     //do something
})() //1

在闭包行参使用undefined而不是从外部1处传入参数,这样做是考虑到在undefined在外部被赋值情况,那么这时候在闭包内部使用undefined就会出现问题了,那么就需要
if(typeof undefined === 'undefined') {
// 
} 
判断。在外部不传参数情况下,闭包内部使用形参在没有赋值时undefined将会保持原本含义,这是由JavaScript 作用域规则决定。
为了不让内部的undefined不会被污染,在形参中默认加上undefined,所以在jquery等js库源代码会看到
(function(window,undefined){
   //todo something
})()

这样代码。在形参中传入默认window也是;类似一样的原理。

最后可以测试下:
var undefined = 123;
(function(undefined){
  console.info(undefined);
})() //在参数中传入undefined和不传情况下会输出什么?


参考:
http://www.iamued.com/qianduan/1450.html


1
5
分享到:
评论
1 楼 deng131 2012-10-29  
在zepto.js代码中也有同样的处理方式:
var undefined, key, $$, classList, emptyArray = [], slice = emptyArray.slice,
 document = window.document,


http://stackoverflow.com/questions/2534260/var-undefined-true

相关推荐

    双目摄像头python测试代码

    双目摄像头python测试代码

    VS2010旗舰版的VB.NET版本任意进制互相转换程序源代码QZQ.zip

    VS2010旗舰版的VB.NET版本任意进制互相转换程序源代码QZQ

    前端开发_Mantine框架_Vite模板_快速启动_开发指_1744170109.zip

    前端开发_Mantine框架_Vite模板_快速启动_开发指_1744170109.zip

    RK3568核心板设计指南:基于Rockchip方案的硬件与软件实现

    内容概要:本文详细介绍了RK3568核心板的设计要点,涵盖硬件和软件两大部分。硬件方面,着重讨论了电源设计、时钟设计、DDR布线、散热设计等关键环节,提供了具体的实例代码和调试技巧。软件部分则涉及驱动开发、系统移植等内容,展示了如何通过设备树文件配置和驱动程序编写来实现硬件与操作系统的无缝对接。此外,还分享了许多实用的调试经验和优化方法,帮助开发者更好地理解和掌握RK3568核心板的设计。 适合人群:从事嵌入式系统开发的技术人员,尤其是对RK3568核心板感兴趣的硬件工程师和软件开发者。 使用场景及目标:适用于准备开发基于RK3568核心板的产品的研发团队,旨在帮助他们快速上手并解决实际开发过程中遇到的问题,提高开发效率和产品质量。 其他说明:文中不仅提供了理论指导,还包括大量实战案例和代码片段,便于读者理解和实践。同时,针对一些常见的错误和难题给出了有效的解决方案,有助于减少开发周期和技术风险。

    前端开发_Vite打包工具_Vue2框架_TypeScrip_1744171829.zip

    前端开发_Vite打包工具_Vue2框架_TypeScrip_1744171829.zip

    试题:矩阵理论:运算与性质.docx

    试题:矩阵理论:运算与性质.docx

    【嵌入式系统】第八届蓝桥杯嵌入式设计与开发省赛基础知识试题解析:选择题及答案分析

    内容概要:本文档为第八届蓝桥杯嵌入式设计与开发项目省赛的基础知识试题部分,主要考察参赛者对嵌入式系统的基本概念、逻辑运算、微控制器特性、通信接口及时钟源的选择等知识点的理解。试题涵盖逻辑表达式的化简、门电路的功能识别、STM32F103RBT6微控制器的内核及数据类型支持情况、RS232接口用于双机通信所需的最少信号线数量、STM32程序下载调试的方式选择、可菊链连接的接口类型、USB外设开发的时钟源选择、DMA的工作机制以及简单电路的电压计算等多个方面,旨在全面检验选手的专业知识掌握程度。 适合人群:具有一定的电子技术与单片机开发基础,准备参加嵌入式设计与开发竞赛的学生或爱好者。 使用场景及目标:①帮助参赛者熟悉并巩固嵌入式系统相关理论知识;②作为赛前复习资料,提高解题速度和准确性;③通过练习加深对各种硬件特性和应用场景的理解。 其他说明:文档提供了详细的答案解析,有助于学习者更好地理解题目背后的原理,建议结合实际项目经验进行学习,同时注意不同版本器件之间的差异。

    MX Player V1.90.1.apk

    MX Player V1.90.1.apk

    3dmax插件a显示所有的组物体.ms

    3dmax插件

    MATLAB实现ARIMA模型的时间序列预测:从数据预处理到模型优化

    内容概要:本文详细介绍了一个基于MATLAB的时间序列预测系统,特别是ARIMA模型的应用。首先介绍了如何从Excel文件中读取数据并进行预处理,如差分处理和平稳性检验。接着讨论了模型定阶方法,包括使用ACF/PACF图和BIC准则自动选择最佳模型阶数。然后讲解了模型参数估计、残差诊断以及预测阶段的具体步骤,包括反向差分和置信区间的计算。最后提供了动态可视化的实现方法,并分享了一些实用技巧和注意事项。 适合人群:具有一定MATLAB编程基础的研究人员、数据分析员、学生等。 使用场景及目标:适用于零售销量、电力负荷、交通流量等多种时间序列预测任务,帮助用户快速构建高效的时间序列预测模型,提高预测精度。 其他说明:文中还提到一些常见的陷阱和解决方案,如数据预处理中的时间戳处理、异常值处理等。同时提供了一些扩展功能,如季节性调整和GARCH模型的应用。

    数据库管理_VitessOperator_兼容性支持_云端部_1744166554.zip

    数据库管理_VitessOperator_兼容性支持_云端部_1744166554.zip

    粒子群与遗传算法结合解决旅行商问题(TSP)的Python实现及优化

    内容概要:本文详细介绍了将粒子群算法(Particle Swarm Optimization, PSO)与遗传算法(Genetic Algorithm, GA)相结合的方法来求解旅行商问题(Traveling Salesman Problem, TSP)。首先,文中展示了如何准备输入数据,即城市坐标存储于文本文件中并通过Python脚本加载。接着,重点讲解了混合算法的核心设计,包括粒子类定义、适应度计算、交叉操作以及变异操作的具体实现方式。此外,还讨论了算法的整体流程及其参数设置,并分享了一些实用的经验和技巧,如引入模拟退火思想以增强跳出局部最优的能力。 适合人群:对智能优化算法感兴趣的科研人员、学生或者有一定编程基础的数据科学家。 使用场景及目标:适用于需要高效求解TSP或其他类似组合优化问题的研究项目或应用系统开发。主要目标是在较短时间内获得接近最优解的路径安排。 其他说明:文中提供了完整的Python代码示例,便于读者理解和实践。同时也提到了一些性能优化措施,例如预处理距离矩阵、调整交叉率和变异率等方法来提升算法效率。

    LS-DYNA霍普金森压杆SHPB动态劈裂仿真k文件详解及优化技巧

    内容概要:本文详细介绍了LS-DYNA软件中霍普金森压杆(SHPB)动态劈裂仿真的源代码k文件的具体实现方法和优化技巧。首先概述了SHPB动态劈裂实验的基本原理,然后深入剖析了k文件中各部分的关键字和参数设置,如模型定义、材料属性、边界条件、接触定义、加载波形以及结果输出控制。文中还特别强调了常见错误和注意事项,并提供了具体的代码片段作为实例。此外,提到了‘LS-DYNA-浩雨’这一资源平台,分享了许多实用的经验和技术诀窍,有助于提高模拟精度和效率。 适合人群:从事材料动态力学性能研究的科研人员、工程技术人员以及对LS-DYNA仿真感兴趣的学者。 使用场景及目标:适用于需要进行SHPB动态劈裂仿真的研究人员,旨在帮助他们更好地理解和掌握LS-DYNA中k文件的编写规则和优化方法,从而提升仿真的准确性和可靠性。 其他说明:文章不仅提供了理论指导,还包括大量实践经验,能够帮助读者快速入门并解决实际问题。同时提醒读者注意一些常见的陷阱,避免不必要的错误。

    3dmax插件037-体块工具.ms

    3dmax插件

    工业自动化中同步磁阻电机及驱动器等关键技术的C语言实现与优化

    内容概要:本文详细介绍了工业自动化领域中同步磁阻电机及其驱动器、光伏储能双向变流器、EtherCAT伺服控制以及软启动器等关键技术的C语言实现方法和优化技巧。针对同步磁阻电机,文中探讨了六步换相算法、模型预测控制、磁链观测器等技术的应用;对于光伏储能,讨论了二阶广义积分器PLL、双向储能模式切换等问题;EtherCAT伺服方面则涉及主站协议栈的状态机设计及时钟同步;软启动器部分讲述了突加负载检测、电压斜坡控制等内容。每个技术点均附有具体的C代码示例,展示了如何应对实际工程中的挑战,如提高能效比、增强控制精度、确保协议兼容性等。 适合人群:从事工业自动化相关工作的工程师和技术人员,尤其是那些希望深入了解同步磁阻电机、光伏储能、EtherCAT伺服控制等领域核心技术实现的人群。 使用场景及目标:适用于正在参与或计划开展工业自动化项目的技术团队,旨在帮助他们掌握高效可靠的嵌入式控制系统开发技能,提升产品的性能指标,降低成本风险。同时,也为高校师生提供了宝贵的实践教学资料。 其他说明:文章不仅分享了理论知识,还结合大量真实案例,强调了实际应用中的注意事项和常见错误规避方法。通过对这些技术细节的学习,读者能够更好地理解和解决工业现场遇到的各种难题。

    多相永磁同步电机控制算法详解:PI、滑模、ADRC及模型预测控制

    内容概要:本文详细介绍了多相(五相和六相)永磁同步电机的各种控制算法及其应用技巧。首先讨论了PI控制的基本原理和常见问题,如积分饱和。接着深入探讨了滑模控制的抖颤抑制技术和ADRC控制中的扩张状态观测器的应用。此外,文章还讲解了SVPWM矢量控制的具体实现方法,以及无位置传感器控制中扩展卡尔曼滤波的应用。针对五相和六相电机的特点,文中提供了具体的矢量选择策略和改进的滑模观测器算法。最后,文章分享了一些实用的经验和技术细节,如参数整定、谐波抑制和电流跟踪优化。 适合人群:具备一定电机控制基础知识的研发人员、工程师和研究人员。 使用场景及目标:适用于需要深入了解多相永磁同步电机控制算法的设计和优化,特别是在高性能驱动系统、工业自动化等领域。目标是提高系统的稳定性和效率,减少电流谐波和转矩波动。 其他说明:文章不仅提供了理论分析,还附带了大量的Matlab/Simulink代码片段,便于读者理解和实践。建议读者结合实际项目进行调试和验证,以获得更好的效果。

    智能穿搭_ComfyUI_模型换装_SegVITON_实时服_1744169167.zip

    智能穿搭_ComfyUI_模型换装_SegVITON_实时服_1744169167.zip

    3dmax插件a定点点击复制.ms

    3dmax插件

    新能源电动车整车控制器开发:基于飞思卡尔5634芯片的高精度模拟量采集与控制

    内容概要:本文详细介绍了基于飞思卡尔5634芯片的新能源电动车整车控制器(VCU)的开发过程和技术细节。主要内容涵盖硬件架构设计,如十路模拟量采集、高边和低边输出驱动及其保护机制;软件部分则涉及Matlab自动生成代码、扭矩控制逻辑以及CCP/INCA标定协议的应用。文中还分享了许多实战经验和常见问题解决方案,强调了量产级别的稳定性和安全性措施,如故障保护、标定接口的安全性以及高效的刷写方法。 适合人群:从事新能源汽车控制器开发的技术人员,尤其是有一定嵌入式系统开发经验的研发人员。 使用场景及目标:帮助开发者深入了解新能源电动车整车控制器的具体实现方式,掌握高效可靠的硬件设计和软件编程技巧,提高产品可靠性和性能。 其他说明:文章不仅提供了详细的代码片段和技术参数,还分享了大量来自实际项目的经验教训,有助于读者避开常见的开发陷阱并提升工作效率。

    【办公软件应用】DeepSeek+WPS配置指南:集成AI助手实现自动化文本处理功能

    、在VB编辑器中添加自定义函数CallDeepSeekAPI,该函数通过HTTP请求调用阿里云的千问2.5大模型API,并处理API响应。第二种方法是通过office-A内容概要I助手插件:本文档详细,用户可从介绍了DeepSeek+W指定网站下载并PS的配置与安装该插件使用方法,由,通过微信登录尚硅谷讲师宋红康讲解。并设置内置大模型,如硅首先介绍了手动配置基流动的满的方法,包括安装血版R1VBA插件,同时提供了交互、配置WPS测试和其他高级功能宏安全性、设置VB模块(如。最后,还提供了如何在W添加阿里云千PS中添加受问2.5大模型的API信任加载项以及更多使用文档的函数)、添加模块链接。 适合人群作为AI助手以及:适合有一定编程创建模板以实现基础和技术背景的宏的自动启用WPS用户,。其次,文档还提供了另一种配置尤其是希望在WPS中集成AI方式——通过office助手进行智能写作-AI助手进行配置,具体步骤和文档处理的用户。 使用场景涵盖下载安装office及目标:-AI助手、在WPS内①适用于需要在WPS中集成设置内置大模型AI助手进行智能并进行交互测试。最后,文档写作、文档处理的用户;给出了wps中添加受信任加载②帮助用户通过手动配置或使用项的方法和Office插件快速集成AI助手的使用DeepSeek+WPS文档链接,确保,提升工作效率;用户能够顺利使用③提供详细的相关功能。 适合人群:对WPS有基本了解,希望提升办公配置步骤,确保用户能够顺利完成配置并正常使用AI助手效率或尝试AI的各项功能。 阅读建议:由于涉及到辅助写作的办公具体的配置步骤和技术人员及开发者。 细节,建议读者使用场景及目标在阅读过程中仔细:①希望通过WPS集成Deep按照步骤操作,并参考提供的链接获取Seek实现智能文本处理、问答等功能更多信息。对于初次配置的用户,;②利用建议先尝试简单的office-AI助手进行文章续写手动配置,熟悉后再考虑使用插、创作等高级件。办公任务;③解决WPS中第三方插件加载受限的问题,确保各类插件正常运行。 阅读建议:本文档内容详尽,实际操作性强,建议读者按照文中步骤逐一尝试,遇到问题可参考提供的补充说明或访问指定网站获取更多信息。同时,对于API密钥的获取和配置部分,务必仔细阅读官方指引,确保顺利完成配置。

Global site tag (gtag.js) - Google Analytics