js变成一些基本规范(温故而知新,顺便发个文章)

//基本技巧
//尽量少用全局变量
myglobal = 'hello';    //反模式
console.log(myglobal)
console.log(window.myglobal)
console.log(window['myglobal'])
console.log(this.myglobal)

function sum(x,y){
result = x + y;
return result;
}

function foo(){
var a = b = 0;    //不要这么写,拒绝链式赋值
}
//代码移植的时候,全局变量会非常危险


//用var声明的变量不能用delete删除

var gvar = 1;
gnovar = 2;
(function(){
fromFuncVar = 3;
})();

console.log(delete gvar);    //false
console.log(delete gnovar); //true
console.log(delete fromFuncVar); //true

console.log(gvar);    //1
//console.log(gnovar);    //undefined
//console.log(fromFuncVar);    //undefined

//访问全局变量的名字叫window,也可以自己定义,以防万一
var glob = (function(){
return this;
})();


//单一var模式
function func(){
var a,
b,
sum = a + b;
}

//变量提升
myname = 'xudy'
function func2(){
alert(myname);    //undefined    //等同于var myname = undefined;
var myname = 'lpf';
alert(myname);    //myname;
}

func2();

//for循环注意事项
var arr = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]
var d1 = new Date().getTime()
for(var i = 0; i < arr.length; i++){    //这么写的坏处就是,每次循环都要访问对象的长度,有点慢
console.log(arr[i])
}
console.log('------------' + (new Date().getTime() - d1));    //6毫秒

d1 = new Date().getTime()
for(var i = 0, length = arr.length; i < length; i++){
console.log(arr[i]);
}
console.log('------------' + (new Date().getTime() - d1));    //3毫秒

d1 = new Date().getTime()
for(var i = arr.length;i--;){
console.log(arr[i]);
}
console.log('------------' + (new Date().getTime() - d1));    //2毫秒 跟0比较更快

//不要为内置原型添加方法

//switch语句
var inspect_me = 0,
result = '';

switch(inspect_me){
case 0:
result = 'hero';
break;
case 1:
result = 'xudy';
default: 
result = 'unknow';
}

//避免隐士类型转换,尽量用 === !===
//避免使用eval

//parseint的数值约定
var month = '06',
year = '09';

console.log(parseInt(month));
console.log(parseInt(month, 10));
console.log(parseInt(year));    //书上说会转成0,但是本人操作还是9,。。。
console.log(parseInt(year, 10));

//大括号
function func3(){
return
{
name: 'xudy'
}
}

console.log(func3())    //undefined
//相当于
function func3(){
return undefined;    //所以接下来的代码并不会执行到
{
name: 'xudy'
}
}

//构造函数首字母大写
function Person(){}
//单词分割
//即,函数名字,用小驼峰,变量名字用_分割
function getName(){}
var first_name = 'xu';
//常量的名字要全部大写
var PI = 3.14,
MAX_WIDTH = 800;
//私有属性用_

//要对函数、函数参数、返回值进行注释

//编写API文档
//jsDoc toolKit
//YUIDoc

 

 

 

 

 

posted on 2017-04-15 00:42  宝清老窖  阅读(122)  评论(0编辑  收藏  举报