资讯专栏INFORMATION COLUMN

编写高质量Javascript的要点-Review深入理解Javascript系列(一)

wh469012917 / 1999人阅读

摘要:编写高质量的要点深入理解系列一知识点最小全局变量全局变量命名易与第三方的脚本引起冲突所以尽可能少的使用全局变量是很重要的相关策略有命名空间模式或是函数立即自动执行,但是要想让全局变量少最重要的还是始终使用来声明变量。

Title: 编写高质量Javascript的要点-Review深入理解Javascript系列(一)
date: 2017-6-9 14:14:20

status: public 知识点!!! 最小全局变量Minimizing Global

全局变量命名易与第三方的脚本引起冲突,所以尽可能少的使用全局变量是很重要的.相关策略有:命名空间模式或是函数立即自动执行,但是要想让全局变量少最重要的还是始终使用var来声明变量。

几种不经意之间声明的全局变量示例(反例)
//第一种
function sum(x,y){
    result = x+y;//隐式声明了全局变量result
    return result;
}

//第二种
function foo(){
    //这边是首先声明了全局变量b,赋值0,又将b的引用指向a;
    var a=b=0;
}
隐式全局变量与明确定义的全局变量的差别

通过var声明的全局变量,通过delete操作符是无法删除的

没有通过var声明的隐式全局变量,可以通过delete删除

注:
在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的

全局对象的访问

在浏览器中,全局对象可以通过window的属性来访问.

在任何层级的作用域中访问全局对象:

var global = (function(){
    return  this;
}());
//这个方法可以随时访问全局对象,因为其被当做函数调用了,this总是指向全局对象.
声明变量的小技巧:单var形式

举个栗子吧:

function foo(){
    var a=1,
        b=2,
        c=a+b,
        obj={},
        $dom = document.getElementById("demo"),
        k,m;
    //....
}
预解析:var的散布问题(Hosting:A Problem with Scattered vars)

对于JavaScript,只要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。

栗子:

a = "hehehe";
function foo(){
    console.log(a);//undefined
    var a = "abcd";//a在此被当作了局部变量,虽然是在之后声明的
    console.log(a);//abcd
}

foo();

Javascript代码执行分为两个阶段:

1.变量,函数声明以及正常格式的参数创建,这是一个解析和进入上下文的阶段
2.代码执行,函数表达式和不合格的标识符被创建.

for循环的优化(For Loops)

HTMLCollectionsDOM方法返回的对象.如:

document.getElementsByName();
document.getElementsByClassName();
document.getElementsByTagName();
document.images;
document.links;
document.forms;
document.forms[0].elements;//页面第一个表单的所有域

HTML集合,在每次访问其长度时会实时的查询DOM,DOM操作相对来说比较昂贵.

//优化的for循环写法,缓存数组的长度.
for(var i=0,len=array.length;i

还有进一步的微操作:

少了一个变量

向下数到0,通常更快,因为和0做比较要比和数组长度或是其他不是0的东西作比较更有效率

var i,myArray=[];
for(i=myArray.length;i--){

}

var myarray = [],
    i = myarray.length;
while (i–-) {
   // 使用myarray[i]做点什么
}
for-in循环(for in loops)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87065.html

相关文章

  • 深入理解JavaScript系列1:编写质量JavaScript代码基本要点

    摘要:访问全局对象在浏览器中,全局对象可以通过属性在代码的任何位置访问除非你做了些比较出格的事情,像是声明了一个名为的局部变量。 前言 才华横溢的Stoyan Stefanov,在他写的由O’Reilly初版的新书《JavaScript Patterns》(JavaScript模式)中,我想要是为我们的读者贡献其摘要,那会是件很美妙的事情。具体一点就是编写高质量JavaScript的一些要素...

    Enlightenment 评论0 收藏0
  • 某熊技术之路指北 ☯

    某熊的技术之路指北 ☯ 当我们站在技术之路的原点,未来可能充满了迷茫,也存在着很多不同的可能;我们可能成为 Web/(大)前端/终端工程师、服务端架构工程师、测试/运维/安全工程师等质量保障、可用性保障相关的工程师、大数据/云计算/虚拟化工程师、算法工程师、产品经理等等某个或者某几个角色。某熊的技术之路系列文章/书籍/视频/代码即是笔者蹒跚行进于这条路上的点滴印记,包含了笔者作为程序员的技术视野、...

    shadowbook 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0

发表评论

0条评论

wh469012917

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<