关于 js的一些书写习惯 实用风格 小技巧

//使用空格来提升阅读性

if ( condition ) {
    // 语句
}

while ( condition ) {
    //
}

for (var i = 0; i < 100; i++ ) {
    //    
}
或者
var i,
    length = 10;
for ( i = 0; i < length; i++) {
    //
}
或者
var i = 0,
    length = 10;
for ( ; i<length; i++ ) {
    //    
}

var prop;
for ( prop in object ) {
    //
}

if ( true ) {
    //
} else {
    //
}

    //赋值, 声明, 函数 ( 命名函数, 函数表达式, 构建函数 )

var foo = 'bar',
    num = 1,
    undef;

//对变量的注释
var array = [];
    object = {};
或者
var //对变量的注释
foo = "",
bar = "",
quux;

//命名函数声明
function foo ( arg1, arg2 ) {
    
}

foo( arg1, arg2 );

//函数表达式
var test = function ( number ) {
    return number * number;
};

//带标示符的函数表达式
var test = function test( number ) {
    if ( number < 2 ) {
        return 1;
    }
    return number * test( number-1 );
};

//构造函数
function FooBar( options ) {
    this.options = options;
}
var fooBar = new FooBar({ a:"alpha" });
fooBar.options;
//{ a: "alpha" }

    C 异常细节

//函数接受'array'
foo([ "alpha", "beta" ]);

//函数接收'object'
foo({
    a:"alpha",
    b:"beta"
});

//函数接受'string'
foo("bar");

//分组用的小括号内部,没有空格
if ( !("foo" in obj) ){
    
}

 //引号 无论你选择单还是双,在javascript中他们在解析上没有区别,选择一种保持一致。

//检测!!!!!!!!!

//null
variable === null;

//null or undefined:
varible == null

//undefined
全局变量
typeof varible === "undefined"
局部变量
varible === undefined

//属性
object.prop === undefined
object.hasOwnProperty( prop )
"prop" in object

   转换类型

var number = 1,
    string = "1",
    bool = false;

number;
//1

number + "";
//"1"

string;
//"1"

+string;
// 1

+string++;
//1

bool;
//false

+bool;
//0

bool + "";
//"false"

var num = 2.5;
parseInt( num, 10 );
// 等价于...

~~num;
num >> 0;
num >>> 0;
//结果都是2

//负值将区别对待...
var neg = -2.5;
parseInt( neg, 10);
//等价于...
~~neg;
neg >> 0;
结果都是 -2;

neg >>> 0;
//结果是 4294967294

    对比运算

    

if ( !foo )
//注意 这将匹配到 0, "", null, undefined, NaN

实用风格

(function( global ){
    var Module = (function(){

        var data = "secret";
        
        return {
            bool: true,
            string: "a string",
            array: [ 1, 2, 3, 4],
            object: {
                lang: "en-Us"
            },
            getData: function(){
                return data;
            },
            setData: function( value ){
                return ( data = value );
            }
        };
    })()

    //把你的模块变成全局对象
    global.Module = Module;

})( this )

    一个实用的构建函数

(function( global ){

    function Ctor( foo ) {
        this.foo = foo;
        return this; 
    }
    
    Ctor.prototype.getFoo = function() {
        return this.foo;
    }

    Ctor.prototype.setFoo = function( val ) {
        return ( this.foo =val );        
    }
    
    //不使用 new 来调用构建函数,你可能会这样做:
    var ctor = function( foo ){
        return new Ctor( foo );
    };

    // 把我们的构建函数变成全局对象
    global.ctor = ctor;    
    
})( this )


  //修改过的示例代码 代码比较清晰

function query( selector ) {
    return document.querySelectorAll( selector );
}

var idx = 0,
    elements = [],
    matches = query('#foo'),
    length = matches.length;

    for( ; idx < length; idx++ ){
        elements.push( matches[ idx ] );
    }


转载于:https://my.oschina.net/felumanman/blog/205876

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值