在前一篇博文中我介绍了一种可以让JavaScript多少具备一点类似Lambda表达式的编程能力的办法,但是由于要兼容于JavaScript的语法检查,所以可以使用的场合也很有限。
不过有些比较细心的朋友可能发现了,我在那个(伪)Lambda模块中使用了几个小技巧,现在我就把这几个小技巧介绍一下:
1、使用new Function来进行语法检查。
尝试写框架的同学们一定对此感受颇深:有的时候通过代码产生的代码可能因为技术上的失误而产语法错误,导致运行过程中异常中断;有的时候需要接受用户的输入,但用户可能有意或者无意地写入有误的语句或表达式。
有些同学为了解决这种问题特意去编写(或者使用现成的)复杂的语法检查过程——但编写用来分析代码语法的代码是一件极其痛苦的事情,一旦发现问题调整起来也非常不方便。
其实这个问题有简单一点的解决办法,就是使用脚本引擎自己的语法检查,比方说eval或者new Function——当然这个eval是不能乱用的,在不适当的时候用了eval的话整个程序都会出问题的;而new Function就没这么大问题——虽然说new Function在任何情况下构造的函数都是在全局作用域下直接工作的,但只是语法检查的话并不会因为作用域问题而产生意外结果,只要你不真的直接调用通过它构造的新函数。
2、在eval接受的参数前面增加“0,”。
其实这是由于IE中存在一个BUG。
出于某种神奇的原因,如果你在IE中想通过调用eval来动态地构造一个函数的话,如果只是在函数的表达式两边增加括号——例如:
复制代码 代码如下:
eval('(function(){ /* code here */ })');
得到的返回也仍然是undefined,而其它浏览器则会正确地返回这个新构造的函数的引用。
经过小小的探索之后,我发现最简单有效的解决问题的办法就是在前边加上“0,” ,这样就在所有(或者说,至少是现在的五大主流)浏览器中都能得到预期结果了。
复制代码 代码如下:
eval('0,function(){ /* code here */ }');
注:在IE9的Chakra引擎中这个问题已经解决了~
3、使用数组对象的concat方法来产生新数组。 认真的说这个应该属于JavaScript的常识,毕竟这个方法的用法在任何一个JavaScript语言功能参考上都能找到。
但是可能有些同学总是想不起来什么时候可以用它。
在我的(伪) Lambda模块中,我很无聊地编写了一个可以把一个引用/值以多种别名同时附加在多个对象上的函数,这个函数既可以接受一个对象作为参数,也可以接受包含一系列对象的数组作为参数。
由于这个函数被调用的次数比较少,所以我决定用(不一定效率最好,但)简单有效的办法来适应两种情况,也就是把单个对象参数转化为只包含一个元素的数组再来处理,我选择了用“[].concat(o)”的形式。
如果你有阅读我的代码,你可能会发现注释中还包含了另一种方式,也就是“if (!(o instanceof Array)) o = [o]” ——后来我想了想,觉得一来不够严谨(和ECMAScript 5中的isArray相比),二来调用的次数比较少,性能提升也很有限,就选择了前一种。
在阅读本文的同学们,你们有没有什么有趣的技巧可以分享给大家呢?
相关推荐:
ChatGPT对于大数据发展的帮助:赋能行业变革,推动智能化未来,ai写作真的好吗
SEO架构:提升网站流量的核心策略,东营南江全平台营销推广
SEO在线服务-让您的网站快速跃升至搜索引擎前列,江西小红书营销推广案例
SEO优化流程:助力网站快速提升排名的关键策略,1745ai
SEO站群:打造强大网络营销引擎,助力企业快速提升排名与流量,seo网站排名案例
seo黑帽是什么,列举几种seo黑帽行为 ,穿老款的ai丢人吗
ChatGPT的VPN梯子:畅享全球互联网自由,打破地域限制,一直搜Ai
ChatGPTWindows版本:让AI助手成为你的工作与生活得力助手,Ai相减变形
ChatGPT40不收费版本:科技革新,智能助手助力生活与工作,ai医疗武器有哪些
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
2025百度收录优化:提升网站排名,助力企业数字化转型,第一ai做
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
AI免费生成:开启智能创作新纪元,助力你的创意无限可能
SEM有哪几个平台?数字营销的多元选择,AI怎么取消移动间距
SEO和品牌营销:如何通过搜索引擎优化打造品牌影响力,建邺seo软件
用AI写文章查重率高吗?揭秘AI写作与查重检测的关系
《收录情况:数字时代的网络信息检索与价值体现》,山东全域营销推广软件客服电话
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
SEO查:如何通过精准优化让网站流量飞速增长,吉林推广营销怎么样
亚马逊站内seo是什么优化,亚马逊seo关键词优化软件 ,ai画卡通章鱼
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
chatai写作免费一键生成,轻松解决写作难题!,陈逗逗ai换脸在线看
企业关键字-助力企业成功的隐形动力,闽侯县企业网站建设
AI助手推进:智能化时代的企业革命,ai改变图片颜色
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
文章AI排版,让创作更高效的秘密武器
AI缩写在线:让人工智能助力你行业前沿技术,ai uhrehara
为什么选择B站VIP?让你畅享更丰富的视听体验,小门类网站seo
ChatGPT页面无法翻阅?带你深度了解背后的原因与解决方案,pdf怎么转换ai文字
SEO模板:提升网站排名,助你快速抢占搜索引擎流量高地,选择seo职业缺点
seo重点工作是什么,seo重点工作是什么意思 ,棋谱检查ai
ChatGPT免费版的限制:你需要了解的5大制约因素,Ai分解模型
AI一键生成原创文章,让创作更高效更轻松!
ChatGPT怎么有梯子?突破网络限制,轻松畅享AI智能,ai对唱音响
SEO外链技巧:提升网站排名的秘密武器,ai视频生日祝福
SEO考核:如何通过精准的SEO优化提升网站排名与流量,茶艺营销推广方案怎么写
GPT-3.5网页版:让你与人工智能零距离接触,ai英语学
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
SEO公司核心业务是什么?揭秘提升网站排名的奥秘,写作助手ai一键生成作文在线
重生成AI:突破科技前沿,开启智能未来
优化标题:如何让你的文章更具吸引力与点击力,整站网站优化解决方案
文章自动生成AI:助力写作新时代,让创作更高效
seo网站代码是什么,网站专业术语中seo意思是什么 ,拟人ai制作
ChatGPT不能用了?了解这一背后的真相及解决方法,ai恐怖头像
打造高效创作体验,写文章AI软件重塑内容生产力
SEO留痕:数字营销的隐性力量,如何通过SEO优化让品牌更具竞争力,铁岭网站关键词建设优化
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
文章去AI回归创作的本真之美
SEO优化快:如何在短时间内实现网站流量爆发,Lacey0508ai