美文网首页
javascript开发人员需要知道的简写技巧

javascript开发人员需要知道的简写技巧

作者: 微笑达人_4b5d | 来源:发表于2017-12-04 10:50 被阅读0次

    满满干货,本文不足之处欢迎补充,交流学习加群460570824

    本文来源于多年的Java编码技术经验,适合所有正在使用Java编程的开发人员阅读。

    本文的目的在于帮助大家更加熟练的运用Java语言来进行开发工作。

    1.变量赋值

    当将一个变量的值赋给另一个变量时,首先需要确保原值不是null、未定义的或空值。

    可以通过编写一个包含多个条件的判断语句来实现:

    if (variable1!== null || variable1 !== undefined || variable1 !== '') {

    let variable2 =variable1;

    }

    或者简写为以下的形式:

    const variable2= variable1 || 'new';

    可以将下面的代码粘贴到es6console中,自己测试:

    let variable1;

    let variable2 =variable1 || '';

    console.log(variable2=== ''); // prints truevariable1 = 'foo';

    variable2 =variable1 || '';

    console.log(variable2);// prints foo

    2.默认值赋值

    如果预期参数是null或未定义,则不需要写六行代码来分配默认值。我们可以只使用一个简短的逻辑运算符,只用一行代码就能完成相同的操作。

    let dbHost;if(process.env.DB_HOST) {

    dbHost =process.env.DB_HOST;

    } else {

    dbHost ='localhost';

    }

    简写为:

    const dbHost =process.env.DB_HOST || 'localhost';

    3.对象属性

    ES6提供了一个很简单的办法,来分配属性的对象。如果属性名与key名相同,则可以使用简写。

    const obj = {x:x, y:y };

    简写为:

    const obj = { x,y };

    4.箭头函数

    经典函数很容易读写,但是如果把它们嵌套在其它函数中进行调用时,整个函数就会变得有些冗长和混乱。这时候可以使用箭头函数来简写:

    functionsayHello(name) {

    console.log('Hello',name);

    }

    setTimeout(function(){

    console.log('Loaded')

    }, 2000);

    list.forEach(function(item){

    console.log(item);

    });

    简写为:

    sayHello = name=> console.log('Hello', name);

    setTimeout(()=> console.log('Loaded'), 2000);

    list.forEach(item=> console.log(item));

    5.隐式返回值

    返回值是我们通常用来返回函数最终结果的关键字。只有一个语句的箭头函数,可以隐式返回结果(函数必须省略括号({ }),以便省略返回关键字)。

    要返回多行语句(例如对象文本),需要使用()而不是{ }来包裹函数体。这样可以确保代码以单个语句的形式进行求值。

    functioncalcCircumference(diameter) { return Math.PI * diameter

    }

    简写为:

    calcCircumference= diameter => (

    Math.PI *diameter;

    )

    6.默认参数值

    可以使用if语句来定义函数参数的默认值。ES6中规定了可以在函数声明中定义默认值。

    functionvolume(l, w, h) { if (w === undefined)

    w = 3; if (h ===undefined)

    h = 4; return l* w * h;

    }

    简写为:

    volume = (l, w =3, h = 4 ) => (l * w * h);

    volume(2)//output: 24

    7.模板字符串

    过去我们习惯了使用“+”将多个变量转换为字符串,但是有没有更简单的方法呢?

    ES6提供了相应的方法,我们可以使用反引号和$ { }将变量合成一个字符串。

    const welcome ='You have logged in as ' + first + ' ' + last + '.'const db = 'http://' + host+ ':' + port + '/' + database;

    简写为:

    const welcome =`You have logged in as ${first} ${last}`;

    const db =`http://${host}:${port}/${database}`;

    8.解构赋值

    解构赋值是一种表达式,用于从数组或对象中快速提取属性值,并赋给定义的变量。

    在代码简写方面,解构赋值能达到很好的效果。

    const observable= require('mobx/observable');

    const action =require('mobx/action');

    construnInAction = require('mobx/runInAction');

    const store =this.props.store;

    const form =this.props.form;

    const loading =this.props.loading;

    const errors =this.props.errors;

    const entity =this.props.entity;

    简写为:

    import {observable, action, runInAction } from 'mobx';

    const { store,form, loading, errors, entity } = this.props;

    甚至可以指定自己的变量名:

    const { store,form, loading, errors, entity:contact } = this.props;

    9.展开运算符

    展开运算符是在ES6中引入的,使用展开运算符能够让Java代码更加有效和有趣。

    使用展开运算符可以替换某些数组函数。

    // joiningarraysconst odd = [1, 3, 5];

    const nums = [2,4 , 6].concat(odd);

    // cloningarraysconst arr = [1, 2, 3, 4];

    const arr2 =arr.slice( )

    简写为:

    // joiningarraysconst odd = [1, 3, 5 ];

    const nums = [2,4 , 6, ...odd];

    console.log(nums);// [ 2, 4, 6, 1, 3, 5 ]

    // cloningarraysconst arr = [1, 2, 3, 4];

    const arr2 =[...arr];

    和concat( )功能不同的是,用户可以使用扩展运算符在任何一个数组中插入另一个数组。

    const odd = [1,3, 5 ];

    const nums = [2,...odd, 4 , 6];

    也可以将展开运算符和ES6解构符号结合使用:

    const { a, b,...z } = { a: 1, b: 2, c: 3, d: 4 };

    console.log(a)// 1console.log(b) // 2console.log(z) // { c: 3, d: 4 }

    10.强制参数

    默认情况下,如果不向函数参数传值,那么Java会将函数参数设置为未定义。其它一些语言则会发出警告或错误。要执行参数分配,可以使用if语句抛出未定义的错误,或者可以利用“强制参数”。

    functionfoo(bar) { if(bar === undefined) { throw new Error('Missing parameter!');

    } return bar;

    }

    简写为:

    mandatory = ( )=> { throw new Error('Missing parameter!');

    }

    foo = (bar =mandatory( )) => { return bar;

    }

    l Array.find

    如果你曾经编写过普通Java中的find函数,那么你可能使用了for循环。在ES6中,介绍了一种名为find()的新数组函数,可以实现for循环的简写。

    const pets = [

    { type: 'Dog',name: 'Max'},

    { type: 'Cat',name: 'Karl'},

    { type: 'Dog',name: 'Tommy'},

    ]functionfindDog(name) { for(let i = 0; i

    }

    }

    }

    简写为:

    pet =pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy');

    console.log(pet);// { type: 'Dog', name: 'Tommy' }

    Object [key]

    虽然将foo.bar写成foo ['bar']是一种常见的做法,但是这种做法构成了编写可重用代码的基础。

    请考虑下面这个验证函数的简化示例:

    functionvalidate(values) { if(!values.first) return false; if(!values.last) returnfalse; return true;

    }

    console.log(validate({first:'Bruce',last:'Wayne'}));// true

    上面的函数完美的完成验证工作。但是当有很多表单,则需要应用验证,此时会有不同的字段和规则。如果可以构建一个在运行时配置的通用验证函数,会是一个好选择。

    // objectvalidation rulesconst schema = {

    first: {

    required:true

    },

    last: {

    required:true

    }

    }

    // universalvalidation functionconst validate = (schema, values) => { for(field inschema) { if(schema[field].required) { if(!values[field]) { return false;

    }

    }

    } return true;

    }

    console.log(validate(schema,{first:'Bruce'})); // falseconsole.log(validate(schema,{first:'Bruce',last:'Wayne'})); // true

    现在有了这个验证函数,我们就可以在所有窗体中重用,而无需为每个窗体编写自定义验证函数。

    11.双位操作符

    位操作符是Java初级教程的基本知识点,但是我们却不常使用位操作符。因为在不处理二进制的情况下,没有人愿意使用1和0。

    但是双位操作符却有一个很实用的案例。你可以使用双位操作符来替代Math.floor( )。双否定位操作符的优势在于它执行相同的操作运行速度更快。

    Math.floor(4.9)=== 4 //true

    简写为:

    ~~4.9 === 4

    //true

    相关文章

      网友评论

          本文标题:javascript开发人员需要知道的简写技巧

          本文链接:https://www.haomeiwen.com/subject/subtixtx.html