玩转C科技.NET

从学会做人开始认识这个世界!http://volnet.github.io

导航

书写JavaScript的一些规范(笔记)

1、缩进

在书写JavaScript的时候以空四个来代替TAB(\0x09),理由是因为 {[查看原文]

缩进

缩进的单位为四个空格。避免使用Tab键来缩进(即使现在已经是21世纪了),也始终没有个统一的Tab长短标准。虽然使用空格会增加文件的大小,但在局域网中几乎可以忽略,且在 最小化过程中也可被消除掉。

}

2、关于JavaScript的花括号{},要一个在右上一个在左下呢?

 

// 推荐
if (someExpression) {
    doSomething();
}
else {
    doSomethingElse();
}

 

// 反对
if (someExpression)
{
    doSomething();
}
else 
{
    doSomethingElse();
}

原来这不仅仅是“造型”的问题,还是一个JavaScript的“BUG”。

 

This style helps to eliminate occurrences of the semi-colon bug; that is, by design JavaScript will automatically insert a semi-colon after some statements. Adding the opening brace on the same line ensures the parser understands that the statement is intended to be split over multiple lines. [from JavaScript Coding Standards]

意思就是JavaScript会自作主张地在一些代码段中插入分号,如下所示:(注意黄底红字的分号)

 

if (someExpression) ;
{
    doSomething();
}
else 
{
    doSomethingElse();
}

假设这个分号加在这个位置,将第一行成为一条空语句,并且让下面的语句产生错误(else找不到就近的if),但还有可能连错误都没有(比如在这个if之前还有一个if的话,else找到了属于它的if,就按照正常但不正确的逻辑执行,违背了作者意图)。

3、Sys.Application.notifyScriptLoaded 在Microsoft Ajax 4.0 中不再被推荐使用了。

The call to Sys.Application.notifyScriptLoaded is deprecated in Microsoft Ajax 4.0, and should therefore be removed from any files that include it when running on that platform.[from JavaScript Coding Standards]

4、脚本加载顺序
浏览器对多个脚本的加载顺序是未定义的(随机的),如果要按顺序加载脚本,可以参考 http://webclientguidance.codeplex.com/

5、闭包写法和prototype写法的区别


// colsure
MyNamespace.MyClass = function MyClass() {
    
this.myFunction = function() {
        
// ...code...
    }
}
// prototype 
MyNamespace.MyClass = function MyClass() {
}
MyNamespace.MyClass.prototype 
= function() {
    myFunction 
= function() {
        
// ...code...
    }
}


在单个实例var obj = new MyClass()的时候,prototype的写法为了找到obj.myFunction()方法需要先找自己,然后再找prototype chain(原型链),直到找到MyFunction后调用执行,而闭包写法则在没有遍历原型链的时候就已经可以找到方法了,因此prototype的性能上稍微会有损失。

但是在多个实例var obj1 = new MyClass(); var obj2 = new MyClass();的时候,闭包的写法则需要在内存中有两份myFunction的拷贝,而prototype写法则只有一份,因此在多次调用的代码里,推荐prototype的写法。

posted on 2010-03-24 11:46  volnet(可以叫我大V)  阅读(581)  评论(0编辑  收藏  举报

使用Live Messenger联系我
关闭