当前位置:首页 »“秋了秋”个人博客 » 前端编程 » js简洁优美写法技巧

js简洁优美写法技巧

作者:秋了秋 发表时间:2016年09月30日

1.压缩稀疏数组: bad:

var a=[2,5,undefind,6,8,undefined,9];
function (){
   var b=[];
   for(var i=0;i<a.length;i++){
       if(a[i]!=undefined){
          b.push(a[i]);
       }
   }
   return b;
}

good:(数组过滤,只返回真值元素)

var a=[2,5,undefind,6,8,undefined,9];
a=a.filter(function(){
   return true;
});

2.判断真假 bad:

if (result !== null || result !== undefined || result !== '' || result !== false || result !== 0) {
   //do somthing
}

good:(所有null,undefined,空,false,0都是假)

if (result) {
    //do somthing
}

3.实例化对象 bad:

var a = new Array();
var b = new Object();
var c = new String("秋叶");

good:(字面量写法简洁且更容易理解)

var a = [];
var b = {};
var c = "秋叶";

4.单一判断 bad:

if (result) {
   console.log("秋叶");
}
if (!result) {
   console.log("秋叶");
}

good:

result && console.log("秋叶");
result || console.log("秋叶");

5.条件选择 bad:

if(result=="yes"){
   a="111";
}else{
   a="000";
}

good:(简单的三元表达式比if更好~)

a=result=="yes"?"111":"000";

6.for循环 bad:

for (var i = 0; i < arr.length; i++)

good:

for(var i in arr)

7.文本框输入触发 bad:

document.getElementById("input").onkeyup(function(){
   console.log("输入内容了");
});

good:(解决keyup键盘触发不能捕捉鼠标粘贴进去的动作)

document.getElementById("input").oninput(function(){
   console.log("输入内容了");
});

8.函数返回 bad:

function test(){
   var test=false;
   var obj=[{content:0,detail:"hahaha"},{content:1,detail:"yes"},{content:0,detail:"no"}];
   for(var i=0;i<obj.length;i++){ 
      if(obj[i].content==1){ 
         test=true; 
      } 
   } 
   return test; 
}

good:(提前返回结束循环,避免做没必要的工作)

function test(){ 
   var test; 
   var obj=[{content:0,detail:"hahaha"},{content:1,detail:"yes"},{content:0,detail:"no"}]; 
   for(var i in obj){ 
      if(obj[i].content){ 
         return true; 
      } 
   } 
   return test; 
}

9.判断元素是否在数组中 bad:

var a=[48,56,65,77,6,80,92]; 
for(var i in a){ 
   if(i===6){ 
      console.log("包含6"); 
   } 
}

good:

var a=[48,56,65,77,6,80,92]; 
a.indexOf(6)>-1 && console.log("包含6");

10.做好后备工作 bad:

var script=document.createElemnt("script");
script.setAttribute('src', ' //netblog.cn/index.js');
document.getElementById("content").appendChild(script);

good:(如果第一个不确定选择器不存在的话就用后备的选择器)

var content=document.getElementById("content") || document.body;
var script=document.createElemnt("script");
script.setAttribute('src', ' //netblog.cn/index.js');
content.appendChild(script);

11.增值简化 bad:

var i=0;
if(value==="yes"){
   var sName = aValues[i]; i++;
}

good:

var i=0;
if(value==="yes"){
   var sName = aValues[i++];
}

12.尽量减少在for循环中的工作 bad:

for(var i=0;i<obj.length;i++){
   //do something
}

good:(避免每次循环都计算obj的length,把length缓存起来)

for(var i=0,len=obj.length;i<len;i++){ 
   //do something 
}

13.使用字典替代switch bad:

var a="s3"; 
switch (a) { 
   case "s1": 
      result = "zero"; 
      break; 
   case "s2": 
      result = "one"; 
      break; 
   case "s3": 
      result = "three"; 
      break; 
   default: 
      result = "unknown"; 
}

good:

var b={s1:"zero",s2:"one",s3:"three"} 
var result=b[a];

14.return布尔值时 bad:

(function (){ 
   if (age > 18) {
      return true;
   } else {
      return false;
   }
})();

good:

(function (){
   return age > 18;
})();

15.不嵌套else的if bad:

if (user.id === 10) {
   if (user.name !== "") {
      if (user.email === "email") {
         //do something...
      }
   }
}

good:

if(user.id === 10 && user.name !=="" && user.email === "email") {
   //do something...
}

16.定义多个变量 bad:

var a = "aa";
var b = "bb";
var c = "cc";

good:

var a = "aa",
   b = "bb",
   c = "cc";

17.避免在循环中频繁对dom的操作 bad:

for (var i = 0; i < 1000; i++){
   str += str;
   document.getElementById("box").innerHTML = str;
}

good:(循环完成后再操作dom)

for (var i = 0; i < 1000; i++){
  str += str;
}
document.getElementById("box").innerHTML = str;

18.谨慎产生全局变量 bad:(无形中产生了全局变量b)

function (){
   var a = b = 1;
}

good:

function (){
   var a = 1,
   b = 1;
}

19.参数的传递 bad:

function regist(userName, userPwd, userEmail, userPhone) {
   //do something...
}

good:(过多参数把它们整合到一个json里面)

var user={userName:"", userPwd:"", userEmail:"", userPhone:""}
function regist(user) {
   //do something
}
1
文章作者: “秋了秋”个人博客,本站鼓励原创。
转载请注明本文地址:http://netblog.cn/blog/460.html
目录: 前端编程标签: js简洁写法 9686次阅读

请求播放音乐,请点击播放

登 录
点击获取验证码
还没账号?点击这里