美文网首页
7个实用的 JavaScript 小技巧(译文)

7个实用的 JavaScript 小技巧(译文)

作者: 不讨喜的大雄 | 来源:发表于2019-05-06 23:44 被阅读0次

    本文为译文,第一次尝试翻译英文博客,很多地方翻译得不好。本文内容十分简单,可直接查看英文原文,或直接看代码部分。文章每一部分都有拓展(暂未翻译),可点击查看。
    原文:7 Useful JavaScript Tricks
    以下为译文:
    和其他编程语言一样,JavaScript 有着许多技巧来解决一些简单的、亦或是困难的任务。其中有大家所熟知的部分,但也有一些技巧可能超乎你的想象。现在让我们来看一下这七个你随即可用的 JavaScript 小技巧!

    数组去重

    获取数组的唯一值可能比你想象中要简单:

    var j = [...new Set([1, 2, 3, 3])]
    >> [1, 2, 3]
    

    我超爱(...)和 Set!

    数组配合布尔

    要从一个数组中过滤falsy值?你或许不知道有这种技巧:

    myArray
        .map(item => {
            // ... 
            // 记得 return
        })
        // 摆脱这些空值
        .filter(Boolean);
    

    只需传递 Boolean 就能去除这些 falsy 值!

    创建一个空的对象

    当然,似乎你可以通过像 {} 这样来创建一个空对象,但实际上这样创建的对象还是有__proto__、hasOwnProperty 以及其他对象的方法。下面是一种创造一个纯对象的方法:

    let dict = Object.create(null);
    
    // dict.__proto__ === "undefined"
    // 在你添加动态属性之前为空
    

    这个对象上绝对没有你没有放入的键或方法!

    合并对象

    JavaScript 合并多个对象的需求由来已久,尤其是当我们创建带有选项的类和小部件时:

    const person = { name: 'David Walsh', gender: 'Male' };
    const tools = { computer: 'Mac', editor: 'Atom' };
    const attributes = { handsomeness: 'Extreme', hair: 'Brown', eyes: 'Blue' };
    
    const summary = {...person, ...tools, ...attributes};
    /*
    Object {
      "computer": "Mac",
      "editor": "Atom",
      "eyes": "Blue",
      "gender": "Male",
      "hair": "Brown",
      "handsomeness": "Extreme",
      "name": "David Walsh",
    }
    */
    

    这三个点让任务变得简单多了!

    强制函数传参

    能够为函数参数设置默认值是 JavaScript 的一个很棒的补充。请查看这个技巧,要求为给定的参数传递值:

    const isRequired = () => { throw new Error('param is required'); };
    
    const hello = (name = isRequired()) => { console.log(`hello ${name}`) };
    
    // 由于没给 hello() 传 name,该代码会报错
    
    // 下面代码也会报错
    hello(undefined);
    
    // 来看看符合要求的写法
    hello(null);
    hello('David');
    

    这是某种下级验证和 JavaScript 惯用方法!

    解构别名

    解构赋值是一个非常受欢迎的 JavaScript 升级,但有时我们更喜欢用其他名称引用这些属性,所以我们可以利用别名:

    const obj = { x: 1 };
    
    // Grabs obj.x as { x }
    const { x } = obj;
    
    // Grabs obj.x as { otherName }
    const { x: otherName } = obj;
    

    有效避免了与现有变量的命名冲突!

    获取查询字符串参数

    多年来,我们编写了大量正则表达式来获取查询字符串值,但那些日子已经一去不复返了——我们拥有了令人惊叹的 URLSearchParams API

    // 假设 "?post=1234&action=edit"
    
    var urlParams = new URLSearchParams(window.location.search);
    
    console.log(urlParams.has('post')); // true
    console.log(urlParams.get('action')); // "edit"
    console.log(urlParams.getAll('action')); // ["edit"]
    console.log(urlParams.toString()); // "?post=1234&action=edit"
    console.log(urlParams.append('active', '1')); // "?post=1234&action=edit&active=1"
    

    是不是比之前简单多了。

    这些年 JavaScript 已经发生了很大的变化,但我最喜欢的部分是我们现在看到 JavaScript 语言改进的速度。尽管 JavaScript 在不断动态变化,我们仍然需要使用一些不错的技巧;把这些技巧放在你的工具箱里,以备不时之需!

    你最喜欢的 JavaScript 技巧是什么呢?

    相关文章

      网友评论

          本文标题:7个实用的 JavaScript 小技巧(译文)

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