05 2013 档案
摘要:隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的:// 定义三个全局变量var global_var = 1;global_novar = 2; // 反面教材(function () { global_fromfunc = 3; // 反面教材}());// 试图删除delete gl..
阅读全文
摘要:预解析:var散布的问题(Hoisting: A Problem with Scattered vars)JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。当你使用了一个变量,然后不久在函数中又重新声明的话,就可能产生逻辑错误。对于JavaScript,只 要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。看下面这个例子:// 反例myname = "global"; // 全局变量function func()
阅读全文
摘要:创建隐式全局变量的反例就是使用任务链进行部分var声明。下面的片段中,a是本地变量但是b确实全局变量,这可能不是你希望发生的:// 反例,勿使用 function foo() { var a = b = 0; // ...}此现象发生的原因在于这个从右到左的赋值,首先,是赋值表达式b = 0,此情况下b是未声明的。这个表达式的返回值是0,然后这个0就分配给了通过var定义的这个局部变量a。换句话说,就好比你输入了:var a = (b = 0);如果你已经准备好声明变量,使用链分配是比较好的做法,不会产生任何意料之外的全局变量,如:function foo() { var a, b...
阅读全文
摘要:模块模式是JavaScript一种常用的编码模式。这是一般的理解,但也有一些高级应用没有得到很多关注。在本文中,我将回顾基础知识,浏览一些不错的高级技巧,甚至我认为是原生基础的。基础知识首先我们开始简单概述模型模式。三年前Eric Miraglia(YUI)的博文使模型模式众所周知。如果你已经很熟悉模型模式,可以直接阅读“高级模式”。匿名闭包这是一切成为可能的基础,也是JavaScript最好的特性。我们将简单的创建匿名函数,并立即执行。所有函数内部代码都在闭包(closure)内。它提供了整个应用生命周期的私有和状态。(function () { // ... all vars and...
阅读全文
摘要:今天一位网友问了一个闭包的问题,做了以下实验如下:<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>闭包作用域探究</title> </head> <body> <script type="text/javascript"&
阅读全文
摘要:更具工作日志整理了这份记录,与君共勉,欢迎意见!!!2013.01 (年前的一个月)07-10 条件选择,集成页面11 封装动画组件12-14 账号设置15-19 头像裁剪21-24 swf25 制定js编码规范26-28 出前端试题,回收测试结果30 引入fancybox(1)动画组件的封装不够通用,只有部分地方用到,没有很好的推广使用(5)历时一个星期的头像裁剪没有搞成功(3)前端试题,对前段基本应用做了梳理(4)swf是个复杂的东西,在半懂不懂之间,其接口风格值得学习(10)完成业务逻辑,属于编码经验积累,无甚长进收获:易用PK多功能: 内核功能强,按场景封装以达到易用的特点按原理拆简:
阅读全文
浙公网安备 33010602011771号