Web前端之路让前端飞Web 前端开发

一些代码的简化

2017-06-05  本文已影响49人  你期待的花开

JavaScript定义对象和数组非常简单,我们想要创建一个对象,一般是这样写的:

var car = new Object();
car.colour = 'red';
car.wheels = 4;
car.hubcaps = 'spinning';
car.age = 4;

下面的写法可以达到同样的效果:

var car = {
    colour:'red',
    wheels:4,
   hubcaps:'spinning',
   age:4
} 

后面的写法要短得多,而且你不需要重复写对象名称。

另外对于数组同样有简洁的写法,过去我们声明数组是这样写的:

var moviesThatNeedBetterWriters = new Array(
  'Transformers','Transformers2','Avatar','Indiana Jones 4'
); 

更简洁的写法是:

var moviesThatNeedBetterWriters = [
  'Transformers','Transformers2','Avatar','Indiana Jones 4'
]; 

对于数组,还有关联数组这样一个特别的东西。 你会发现很多代码是这样定义对象的:

var car = new Array();
car['colour'] = 'red';
car['wheels'] = 4;
car['hubcaps'] = 'spinning';
car['age'] = 4; 

其实,“关联数组”只是对象的一个别名而已。

另外一个简化代码的方法是使用三元运算符,举个例子:

var direction;
if(x < 200){
  direction = 1;
} else {
  direction = -1;
} 

我们可以使用如下的代码替换这种写法:

var direction = x < 200 ? 1 : -1;

要找一组数字中的最大数,我们可能会写一个循环,例如:

var numbers = [3,342,23,22,124];
var max = 0;
for(var i=0;i<numbers.length;i++){
  if(numbers[i] > max){
    max = numbers[i];
  }
}
alert(max);

其实,不用循环可以实现同样的功能:

var numbers = [3,342,23,22,124];
numbers.sort(function(a,b){return b - a});
alert(numbers[0]); 

而最简洁的写法是:

Math.max(12,123,3,2,433,4); //  433

你甚至可以使用Math.max来检测浏览器支持哪个属性:

var scrollTop= Math.max( doc.documentElement.scrollTop,doc.body.scrollTop); 

如果你想给一个元素增加class样式,可能原始的写法是这样的:

function addclass(elm,newclass){
  var c = elm.className;
  elm.className = (c === '') ? newclass : c+' '+newclass; 
}

而更优雅的写法是:

function addclass(elm,newclass){
  var classes = elm.className.split(' ');
  classes.push(newclass);
  elm.className = classes.join(' ');
}
上一篇 下一篇

猜你喜欢

热点阅读