- 浏览: 1480389 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
luhouxiang:
写的很不错,学习了
Extjs 模块化动态加载js实践 -
kingkongtown:
如果想改成淘宝后台那样,可以在编辑器批量上传图片呢?
kissy editor 阶段体会 -
317966578:
兄弟我最近也在整jquery和caja 开放一些接口。在git ...
caja 原理 : 前端 -
liuweihug:
Javascript引擎单线程机制及setTimeout执行原 ...
setTimeout ,xhr,event 线程问题 -
辽主临轩:
怎么能让浏览器不进入 文档模式的quirks模式,进入标准的
浏览器模式与文本模式
条件函数定义与异常作用域
好像以前没记录过,罕有情景 firefox 被ie 系列(<=8)以及chrome v8,safari,opera 孤立了:
经典如:
if(true){ function god(){ } }else{ function god(){ alert("what the hell!"); } } alert(god);
不常见如:
alert(typeof z); try{ var x=1; }catch(e){ function z(){} } alert(typeof z);
总结:
函数声明在非firefox下是神,无视障碍会穿越(最后声明的就是事实)!哪个是标准?
updated 2010-10 :
标准与实现
ie,chrome 中函数都会根据 ecma 规范被提前申明,例如:
if(false) { function f(){..} }
等价于
function f(){..} if(false){}
但是 ie 对于具名函数表达式处理有差异。ie 中
if(false){ var f=function f(){ .... }; }
相当于:
function f(){ ... } if(false) { var f=function(){...} }
chrome 最符合标准,具名表达式中的名字只能用于该函数内部递归调用,而不能在当前作用域起作用,则相当于:
if(false){ var f=function(){...}; }
firefox 由于自 javascript1.5 引入了 Conditional function declarations ,则函数申明也可以条件化( firefox 把这种不叫做声明,而叫做表达式 )
if(false){ function f(){..} }
相当于:
if(false){ //不一定是window,只是在当前作用域动态定义 window.f=function(){...} }
详细可见这里的讨论 以及针对jscript的实验 。(相等比较部分看这里 。)
updated 2011-03-04 :
引擎实现
根据 Narcissus 的实现(基于 firefox ),函数定义可分为三种方式:
DECALRED_FORM :
function t(){}
STATEMENT_FORM :
{ function t(){ } }
EXPRESSED_FORM :
var x = function t(){}
而对于 DECALRED_FORM 各个浏览器自然没有疑问。这次主要看看 firefox 的整体函数实现:
switch (n.type) { case FUNCTION: if (n.functionForm != DECLARED_FORM) { /* function(){} 或 { function t(){ } } */ if (!n.name || n.functionForm == STATEMENT_FORM) { v = new FunctionObject(n, x.scope); //如果是有名字,则在当前作用域中加入名字 if (n.functionForm == STATEMENT_FORM) x.scope.object[n.name] = v; } /** var x=function t(){}; **/ else { //新生成一个作用域,里面只有名字 t ,当前作用域引不到 x.scope = {object: {}, parent: x.scope}; try { //只能在函数中引到本函数的名字 t v = new FunctionObject(n, x.scope); // t 加入到新的作用域 x.scope.object[n.name] = v; } finally { //恢复 x.scope = x.scope.parent; } } } break;
update 2011-08-16
function and function scope
细读 function and function scope @ mdc :
function x(){}
相当于函数名为 x ,并且在当前 scope 加了一个变量 x 指向函数 x.
看起来和函数表达式情况类似:
var x=function x(){}
明显了除了解析阶段不同,还有一个微小的差别:
函数声明不会绑定函数名到函数体作用域,而函数表达式则会将将函数名绑定到函数体作用域,而函数名是不可变的,可变的只是那个在当前作用域指向函数的变量:
函数声明没有绑定函数名到函数体:
(function () { function x(zz) { if (zz == 2) { alert("o"); return; } x(2); } var z = x; x = 1; z(); })();
函数表达式绑定了函数名到函数体:
(function () { var x = function x(zz) { if (zz == 2) { alert("o"); return; } x(2); } var z = x; x = 1; z(); })();
catch 内变量声明问题:
try{ var x=1; throw x; }catch(e){ var x=2; } alert(typeof e); alert(x);
除了 ie<9 ( ie9 e 也会 scope leak 到上一层作用域 )外其中 e 是没问题的,但是x就很奇怪了,根据ecma规范,catch 会新建一个词法环境,e以及在里面申明的变量不会和外边的混在一起的?catch退出后新的词法环境就消失了,怎么x会被修改呢?
The production Catch : catch ( Identifier ) Block is evaluated as follows:
1. Let C be the parameter that has been passed to this production.
2. Let oldEnv be the running execution context’s LexicalEnvironment.
3. Let catchEnv be the result of calling NewDeclarativeEnvironment passing oldEnv as the argument .
4. Call the CreateMutableBinding concrete method of catchEnv passing the Identifier String value as the
argument.
5. Call the SetMutableBinding concrete method of catchEnv passing the Identifier, C, and false as arguments. Note that the last argument is immaterial in this situation.
6. Set the running execution context’s LexicalEnvironment to catchEnv.
7. Let B be the result of evaluating Block.
8. Set the running execution context’s LexicalEnvironment to oldEnv.
9. Return B.
updated 2011-08-16:
异常 e 应该是插入到新建的申明作用域头,但这个声明作用域比较特殊,则其内声明的变量其实会声明在父作用域,这个新的作用域在查找时起作用,只有在这个作用域能够找到 e
Refer:
http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
http://www.dustindiaz.com/javascript-function-declaration-ambiguity/
发表评论
-
continuation, cps
2013-09-12 16:49 3101起 随着 nodejs 的兴起,异步编程成为一种潮流 ... -
一种基于匹配回朔的 css3 选择器引擎实现
2013-05-07 20:40 3666一种基于匹配回朔的 css3 选择器引擎实现 介绍 C ... -
cubic-bezier 模拟实现
2013-01-05 16:34 14172cubic-bezier 曲线是 css3 动画的一个重要基石 ... -
构建前端 DSL
2012-10-11 22:10 5446目前在传统的软件开 ... -
Get cursor position and coordinates from textarea
2012-04-10 20:50 5133最近需要从 textarea 中获 ... -
兼容 ie 的 transform
2012-02-23 14:00 6491css 2d transform 是 css3 引入的一个新的 ... -
promise api 与应用场景
2012-02-07 17:34 7464promise 是 commonjs 社区中提出的异步规范,其 ... -
closure compiler 代码优化实例
2012-01-08 03:23 2907closure compiler 可以进行不少有意思的优化 ... -
write html parser
2011-12-01 02:48 2997首先需要声明 html 不能用正则表达式来直接匹配进行内容抽取 ... -
获取剪贴板数据
2011-11-07 23:31 6500兼容性: 获取剪贴板数据这块各个浏览器间存在很大的 ... -
url 映射问题
2011-11-07 21:52 3254背景 url mapping 我最早知道是作为 j ... -
tip:如何原生播放声音
2011-10-19 12:45 3009如果不想考虑浏览器间 ... -
转载:瀑布流布局浅析
2011-09-29 19:02 2909简介 如果你经 ... -
cross domain request
2011-09-29 18:39 2886场景 跨域请求是随着 ... -
基于多继承的树设计
2011-09-18 03:42 2294分类 树是一种常见 ... -
caja 原理 : 前端
2011-09-01 16:48 7153作为前端开放的基础安全保证,caja 是目前比较合 ... -
tokenization of html
2011-08-29 22:38 2840html 符号解析问题 场景: 在页面上输出包 ... -
ie 下 cloneNode 导致的属性克隆
2011-08-24 16:10 2520这个还是很值得记下,一直存在的很大隐患终于解决,由于在 ie& ... -
循环引用下的深度克隆
2011-08-04 20:39 2367深度复制和浅度复制 是当初初学 c 遇到的第一批问题,似乎使 ... -
模块的静态与动态循环依赖
2011-07-25 03:43 3347场景: 循环依赖 我是不支持的,但现实中似乎又确实需 ...
相关推荐
I notice that site don't loads properly when the Firefox addin 'Firebug' is enabled. Disable it if you've problems 620AA3997A6973D7F1E8E4B67546E0F6 => cw2k ... you may also get an offline MD5 ...
特别是在较早期版本的Firefox浏览器中,这些细微的差别可能导致意料之外的错误。 JavaScript的函数可以通过两种主要方式定义,一种是函数声明(Function Declaration),另一种是函数表达式(Function Expression)...
indent="yes" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> declaration=...
内容概要:本文详细介绍了基于WPF框架构建MES(制造执行系统)的经验和技术要点。主要内容包括:使用C#和WPF进行AGV(自动导引车)调度的多线程编程,采用Entity Framework和Dapper进行数据库操作,以及通过TCP/IP Socket和OPC UA协议实现工业组态和数据通信。此外,还探讨了Excel数据导出、PLC通信、路径规划、缓存机制等具体应用场景的技术实现。 适合人群:对WPF框架、MES系统开发感兴趣的软件工程师,尤其是那些希望深入了解工业自动化领域的开发者。 使用场景及目标:适用于需要快速开发高效稳定的MES系统的团队。主要目标是提高生产效率,优化资源配置,增强系统的实时性和稳定性。文中提供的代码片段和实践经验可以帮助开发者更好地理解和解决实际开发中遇到的问题。 其他说明:文章不仅提供了详细的代码示例,还分享了许多实用的开发技巧和优化建议,如多线程处理、异步编程、内存管理和UI更新等。对于想要深入研究WPF框架及其在工业自动化领域应用的人来说,是一份宝贵的参考资料。
3dmax插件
内容概要:本文详细介绍了基于西门子Smart200 PLC和威伦触摸屏的三轴螺丝机控制系统。首先,阐述了系统的硬件配置,包括PLC型号、步进驱动器和触摸屏的选择。接着,深入讲解了核心控制流程,如原点回归、点动控制和任意坐标定位的具体实现方法。文中还展示了如何利用PLC自带的高速脉冲输出进行精确的运动控制,以及如何通过触摸屏实现坐标管理和实时监控。此外,文章分享了一些实用技巧,如状态机架构的应用、运动控制框架的设计思路和常见问题的解决方案。 适合人群:自动化控制领域的工程师和技术人员,尤其是对PLC编程和运动控制感兴趣的初学者和有一定经验的研发人员。 使用场景及目标:适用于工业自动化生产线中需要精密定位和控制的设备开发,如螺丝机、贴标机、点胶机等。目标是帮助读者掌握PLC编程技巧,提高运动控制系统的稳定性和效率。 其他说明:文中提供了详细的代码示例和调试建议,有助于读者快速理解和应用相关技术。同时,强调了系统设计中的注意事项,如脉冲当量计算、机械结构优化等,确保系统的可靠运行。
Con北京站聚焦技术落地与前沿趋势,核心方向包括: AI工程化:端侧推理、RAG增强、多模态生成成为主流; 云原生深水区:混合云治理、湖仓一体架构、可观测性技术持续迭代; 安全与效能:大模型安全防御、研发流程标准化、平台工程价值凸显; 行业融合:物流、金融、社交等领域的技术跨界创新案例丰富。 大会为开发者提供了从理论到实践的全景视角,推动技术向生产力转化。
内容概要:本文详细介绍了用于电动汽车内置式永磁同步电机(IPMSM)的基于查询表的矢量控制算法及其自动生成程序。文章首先解释了IPMSM的凸极特性和MTPA(最大转矩每安培)、MTPV(最大功率每伏特)之间的关系,强调了电流分配表在两者间平滑切换的重要性。随后展示了核心代码结构,包括遍历转速-转矩工作点、求解最优dq轴电流、电压电流约束检查以及弱磁补偿策略。此外,文章还讨论了数据输出方式,提供了C语言二维数组和Excel两种格式,并分享了一些实战经验和常见问题解决方法。最后提到了弱磁仿真的重要性,特别是在应对电池电压波动时的表现。 适合人群:从事电动汽车电机控制系统开发的技术人员,尤其是熟悉MATLAB编程并有一定电机控制背景的研发人员。 使用场景及目标:适用于需要高效生成IPMSM电流参考值表的工程项目,旨在提高电机控制系统的性能和稳定性,减少手动计算带来的错误和时间成本。 其他说明:文中提供的MATLAB源码已开源,可在GitHub上获取。同时,作者提醒使用者根据实际情况调整电机参数,以确保生成的查表能够正确应用于具体项目。
内容概要:本文详细介绍了三种常用的信号降噪方法:滤波降噪、小波降噪和小波包降噪。滤波降噪通过设计滤波器来分离信号和噪声,适用于频率特性明确的噪声。小波降噪基于小波变换,能够自适应地捕捉信号的局部特征,尤其适合非平稳信号。小波包降噪则进一步细化了信号的频率分解,提供了更好的降噪效果,尤其在处理复杂信号时表现出色。文中通过Python代码展示了每种方法的具体实现,并进行了效果对比。 适用人群:从事信号处理领域的研究人员和技术人员,以及对信号降噪感兴趣的开发者。 使用场景及目标:① 对于频率特性明确的噪声,可以选择滤波降噪;② 处理非平稳信号时,推荐使用小波降噪;③ 在追求极致降噪效果,特别是面对复杂信号时,优先考虑小波包降噪。 其他说明:文中提供的Python代码可以帮助读者更好地理解和实践这三种降噪方法。同时,强调了在实际应用中需要根据具体的信号特点和需求选择最适合的降噪方法。
Con北京站聚焦技术落地与前沿趋势,核心方向包括: AI工程化:端侧推理、RAG增强、多模态生成成为主流; 云原生深水区:混合云治理、湖仓一体架构、可观测性技术持续迭代; 安全与效能:大模型安全防御、研发流程标准化、平台工程价值凸显; 行业融合:物流、金融、社交等领域的技术跨界创新案例丰富。 大会为开发者提供了从理论到实践的全景视角,推动技术向生产力转化。
内容概要:本文详细介绍了三菱FX系列PLC的模拟量输入输出转换功能块(FB)的设计与应用。作者将常见的模拟量处理逻辑封装成即插即用的功能块,极大提高了开发效率。文中详细解释了功能块的接口设计、核心转换逻辑、量程适配方法以及抗干扰措施。同时,提供了多个实际项目的应用案例,如注塑机温度控制、真空炉控制等,展示了功能块的稳定性和易用性。 适合人群:从事工业自动化控制系统的工程师和技术人员,特别是对三菱PLC有一定了解的从业者。 使用场景及目标:适用于需要快速实现模拟量处理的工程项目,如温度、压力、流量等物理量的测量与控制。主要目标是提高开发效率,减少重复劳动,确保系统稳定可靠。 其他说明:文中提到的功能块不仅简化了编程流程,还增加了错误检测和抗干扰能力,使得即使是新手也能轻松应对复杂的模拟量处理任务。此外,功能块支持多种量程和硬件版本,适应性强。
基于深度学习的系统
前端开发_浏览器扩展_Vite框架_Vue3_模板_适配_M_1744167663.zip
内容概要:本文详细介绍了计算机专业求职面试的内容与技巧,旨在帮助求职者高效准备。面经内容涵盖技术面试、系统设计面试、行为面试和其他类型面试。技术面试包括算法与数据结构、计算机基础、编程语言与框架等高频考点;系统设计面试强调高并发、高可用等设计目标,涉及短链系统、分布式缓存等典型题目;行为面试关注项目中的挑战解决、团队协作等问题,提倡使用STAR法则作答。技巧分享方面,技术面试准备建议刷题、复习基础知识;系统设计采用分层设计法,推荐相关书籍和资源;行为面试注重项目包装,强调量化成果和技术术语的使用;面试实战技巧包括良好沟通、拆解难题等。此外,文章还提供了资源与工具推荐、避坑指南以及不同公司面试侧重点分析,并指出短期冲刺和长期积累对提升面试通过率的重要性。; 适合人群:计算机专业学生和从业者,尤其是有求职需求的人员。; 使用场景及目标:①帮助求职者了解面试常见题型与考察点,进行有针对性的准备;②提供有效的面试技巧,提高求职成功率;③根据不同公司特点调整准备方向,增强竞争力。; 其他说明:通过系统化准备和反复练习,求职者能显著提升面试通过率。技术能力决定下限,而沟通表达与思维逻辑决定上限。
内容概要:本文详细介绍了西门子博图时间加密程序块的应用,特别是在1212C DC/DC/DC PLC和KTP700 Basic PN触摸屏中的实现。文章分为加密算法块和解密算法块两大部分,通过具体的代码示例展示了加密和解密的具体过程。加密算法采用了循环右移和异或运算,确保了加密的高效性和安全性。解密则通过逆向操作恢复原始时间数据。此外,文中还讨论了密钥更新策略、时间戳精度、硬件时钟同步等问题,并提供了实际应用中的注意事项和优化建议。 适合人群:从事工业自动化控制系统的工程师和技术人员,尤其是熟悉西门子PLC和触摸屏编程的人员。 使用场景及目标:① 提供一种可靠的时间加密方法,保护关键时间数据和逻辑不被轻易破解;② 增强项目的保密性和安全性;③ 提供实际项目中的应用案例和优化建议,便于快速移植到其他项目中。 其他说明:文章强调了加密和解密过程的透明度,使得维护人员能够直观理解加密逻辑,有助于快速定位和解决问题。同时,文中提到的一些技巧如动态密钥生成、时间戳精度调整等,也为实际应用提供了宝贵的实践经验。
内容概要:本文详细介绍了三相步进电机的开环矢量控制方案及其源码实现,尤其是坐标变换(Clarke变换和Park变换)和空间矢量脉宽调制(SVPWM)的具体实现方法。文中不仅解释了理论背景,还提供了具体的代码片段,展示了如何通过坐标变换将三相电流映射到旋转坐标系,并通过SVPWM生成合适的PWM信号来控制电机。此外,文章还讨论了一些实际应用中的技巧和注意事项,如角度生成策略、扇区判断优化以及启动时的斜坡函数设置。 适合人群:从事电机控制领域的工程师和技术爱好者,尤其是对步进电机矢量控制感兴趣的初学者和有一定基础的研发人员。 使用场景及目标:适用于需要提高步进电机控制精度和响应速度的场合,如工业自动化设备、搬运机械手等。目标是通过理解和应用开环矢量控制技术,使步进电机表现出接近伺服电机的性能,同时降低成本和复杂度。 其他说明:文章强调了在资源有限的嵌入式系统中进行优化的重要性,如使用查表法替代实时计算、利用位运算提高效率等。此外,还提到了一些调试技巧,如通过示波器观察波形、调整角度积分环节等,有助于解决实际应用中的常见问题。
内容概要:本文详细介绍了基于STM32F031的FOC有感电机控制代码的功能特点及其应用场景。代码不仅涵盖了原理图、PCB设计,还包括详细的程序代码和注释。主要功能包括转把控制、刹车、助力、欠压检测、巡航、铁塔王通讯、一键通、隐形限速、霍尔修复和故障显示等。文中还展示了多个关键代码片段,如ADC采样、PWM生成、霍尔信号处理、故障检测和通讯协议处理等,强调了代码的稳定性和实用性。 适合人群:从事电机控制领域的工程师和技术爱好者,尤其是对FOC算法感兴趣的开发者。 使用场景及目标:适用于电动自行车、滑板车等需要高效电机控制的应用场景。目标是帮助开发者理解和应用成熟的FOC控制代码,提升产品的稳定性和功能性。 其他说明:代码经过量产验证,具有较高的可靠性和灵活性,能够适配多种国产芯片平台。文中还提供了丰富的实战经验和优化技巧,有助于解决实际开发中的常见问题。
浅析电子商务环境下物流的特点.docx
Con北京站聚焦技术落地与前沿趋势,核心方向包括: AI工程化:端侧推理、RAG增强、多模态生成成为主流; 云原生深水区:混合云治理、湖仓一体架构、可观测性技术持续迭代; 安全与效能:大模型安全防御、研发流程标准化、平台工程价值凸显; 行业融合:物流、金融、社交等领域的技术跨界创新案例丰富。 大会为开发者提供了从理论到实践的全景视角,推动技术向生产力转化。
内容概要:本文详细介绍了欧姆龙FH系列机器视觉系统的独特优势及其应用场景。FH系列通过提供强大的仿真软件、优化的PLC通信接口以及先进的深度学习模块,显著提高了工业视觉项目的开发效率和准确性。具体而言,FH系列的仿真环境允许开发者在虚拟环境中调试算法,减少了现场调试的时间;其PLC通信接口支持多种工业协议并实现了自动寄存器映射,降低了设备工程师的沟通成本;深度学习模块则提供了预训练模型和自动ROI聚焦等功能,大幅提升了缺陷检测的精度和速度。此外,FH系列还集成了智能标定向导和动态标定功能,使得尺寸测量更加精确和便捷。 适用人群:从事工业自动化、机器视觉、智能制造等领域的一线工程师和技术管理人员。 使用场景及目标:适用于需要快速开发和部署视觉检测系统的工业生产线,尤其是汽车制造、电子产品、制药等行业。主要目标是缩短项目周期、提高检测精度、降低开发难度。 其他说明:相比于传统的视觉检测工具如Halcon,FH系列以其易用性和高效性脱颖而出,成为现代工业视觉项目的首选解决方案。文中提到的具体案例展示了FH系列在实际生产中的卓越表现,证明了其在提升工作效率方面的巨大潜力。