最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

前端开发不得不知的10个最佳ES6特性

来源:懂视网 责编:小采 时间:2020-11-27 22:31:29
文档

前端开发不得不知的10个最佳ES6特性

前端开发不得不知的10个最佳ES6特性:为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。 ES6,正式名称是ECMAScript2015,但是ES6这个名称更加简洁。ES6已经不再是JavaScript最新的标准,但是它已经广泛用于编程实践中。如果你还
推荐度:
导读前端开发不得不知的10个最佳ES6特性:为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。 ES6,正式名称是ECMAScript2015,但是ES6这个名称更加简洁。ES6已经不再是JavaScript最新的标准,但是它已经广泛用于编程实践中。如果你还

为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。

ES6,正式名称是ECMAScript2015,但是ES6这个名称更加简洁。ES6已经不再是JavaScript最新的标准,但是它已经广泛用于编程实践中。如果你还没用过ES6,现在还不算太晚…

下面是10个ES6最佳特性,排名不分先后:

  • 函数参数默认值
  • 模板字符串
  • 多行字符串
  • 解构赋值
  • 对象属性简写
  • 箭头函数
  • Promise
  • Let与Const
  • 模块化
  • 函数参数默认值
  • 不使用ES6
  • 为函数的参数设置默认值:

    function foo(height, color)
    {
     var height = height || 50;
     var color = color || 'red';
     //...
    }

    这样写一般没问题,但是,当参数的布尔值为false时,是会出事情的!比如,我们这样调用foo函数:

    foo(0, "", "")

    因为0的布尔值为false,这样height的取值将是50。同理color的取值为‘red'。

    使用ES6

    function foo(height = 50, color = 'red')
    {
     // ...
    }

    模板字符串

    不使用ES6

    使用+号将变量拼接为字符串:

    var name = 'Your name is ' + first + ' ' + last + '.'

    使用ES6

    将变量放在大括号之中:

    var name = `Your name is ${first} ${last}.`

    ES6的写法更加简洁、直观。

    多行字符串

    不使用ES6

    使用“\n\t”将多行字符串拼接起来:

    var roadPoem = 'Then took the other, as just as fair,\n\t'
     + 'And having perhaps the better claim\n\t'
     + 'Because it was grassy and wanted wear,\n\t'
     + 'Though as for that the passing there\n\t'
     + 'Had worn them really about the same,\n\t'

    使用ES6

    将多行字符串放在反引号“之间就好了:

    var roadPoem = `Then took the other, as just as fair,
     And having perhaps the better claim
     Because it was grassy and wanted wear,
     Though as for that the passing there
     Had worn them really about the same,`

    解构赋值

    不使用ES6

    当需要获取某个对象的属性值时,需要单独获取:

    var data = $('body').data(); // data有house和mouse属性
    var house = data.house;
    var mouse = data.mouse;

    使用ES6

    一次性获取对象的子属性:

    var { house, mouse} = $('body').data()

    对于数组也是一样的:

    var [col1, col2] = $('.column');

    对象属性简写

    不使用ES6

    对象中必须包含属性和值,显得非常多余:

    var bar = 'bar';
    var foo = function ()
    {
     // ...
    }
    var baz = {
     bar: bar,
     foo: foo
    };

    使用ES6

    对象中直接写变量,非常简单:

    var bar = 'bar';
    var foo = function ()
    {
     // ...
    }
    var baz = { bar, foo };

    箭头函数

    不使用ES6

    普通函数体内的this,指向调用时所在的对象。

    function foo() 
    {
     console.log(this.id);
    }
    var id = 1;
    foo(); // 
    输出1 foo.call({ id: 2 }); // 输出2

    使用ES6

    箭头函数体内的this,就是定义时所在的对象,而不是调用时所在的对象。

    var foo = () => {
     console.log(this.id);
    }
    var id = 1;
    foo(); // 
    输出1 foo.call({ id: 2 }); // 输出1

    Promise

    不使用ES6

    嵌套两个setTimeout回调函数:

    setTimeout(function()
    {
     console.log('Hello'); // 1秒后
    输出"Hello" setTimeout(function() { console.log('Fundebug'); // 2秒后输出"Fundebug" }, 1000); }, 1000);

    使用ES6

    使用两个then是异步编程串行化,避免了回调地狱:

    var wait1000 = new Promise(function(resolve, reject)
    {
     setTimeout(resolve, 1000);
    });
    wait1000
     .then(function()
     {
     console.log("Hello"); // 1秒后
    输出"Hello" return wait1000; }) .then(function() { console.log("Fundebug"); // 2秒后输出"Fundebug" });

    Let与Const

    使用Var

    var定义的变量未函数级作用域:

    {
     var a = 10;
    }
    console.log(a); // 
    输出10

    使用let与const

    let定义的变量为块级作用域,因此会报错:(如果你希望实时监控JavaScript应用的错误,欢迎免费使用Fundebug)

    {
     let a = 10;
    }
    console.log(a); // 报错“ReferenceError: a is not defined”

    const与let一样,也是块级作用域。

    不使用ES6

    使用构造函数创建对象:

    function Point(x, y)
    {
     this.x = x;
     this.y = y;
     this.add = function()
     {
     return this.x + this.y;
     };
    }
    var p = new Point(1, 2);
    console.log(p.add()); // 
    输出3

    使用ES6

    使用Class定义类,更加规范,且你能够继承:

    class Point
    {
     constructor(x, y)
     {
     this.x = x;
     this.y = y;
     }
     add()
     {
     return this.x + this.y;
     }
    }
    var p = new Point(1, 2);
    console.log(p.add()); // 
    输出3

    模块化

    JavaScript一直没有官方的模块化解决方案,开发者在实践中主要采用CommonJS和AMD规范。而ES6制定了模块(Module)功能。

    不使用ES6

    Node.js采用CommenJS规范实现了模块化,而前端也可以采用,只是在部署时需要使用Browserify等工具打包。这里不妨介绍一下CommenJS规范。

    module.js中使用module.exports导出port变量和getAccounts函数:

    module.exports = {
     port: 3000,
     getAccounts: function() {
     ...
     }
    }

    main.js中使用require导入module.js:

    var service = require('module.js')
    console.log(service.port) // 
    输出3000

    使用ES6

    ES6中使用export与import关键词实现模块化。

    module.js中使用export导出port变量和getAccounts函数:

    export var port = 3000
    export function getAccounts(url) {
     ...
    }

    main.js中使用import导入module.js,可以指定需要导入的变量:

    import {port, getAccounts} from 'module'
    console.log(port) // 
    输出3000

    也可以将全部变量导入:

    import * as service from 'module'
    console.log(service.port) // 3000

    总结

    以上所述是小编给大家介绍的前端开发不得不知的10个最佳ES6特性,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    前端开发不得不知的10个最佳ES6特性

    前端开发不得不知的10个最佳ES6特性:为了保证可读性,本文采用意译而非直译,并且对源代码进行了大量修改。另外,本文版权归原作者所有,翻译仅用于学习。 ES6,正式名称是ECMAScript2015,但是ES6这个名称更加简洁。ES6已经不再是JavaScript最新的标准,但是它已经广泛用于编程实践中。如果你还
    推荐度:
    标签: 特性 前端开发 ES6
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top