//基本技巧
//尽量少用全局变量
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
原文:http://www.cnblogs.com/xudy/p/6711585.html