zoukankan      html  css  js  c++  java
  • 20个简洁的js代码片段

    转自:https://mp.weixin.qq.com/s/w7_ATf5PzHqjQ0OdKc5xBw

    <!-- https://mp.weixin.qq.com/s/l1isGENvKOQOUUjJssI1nA -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>20个简洁的 JS 代码片段</title>
        <script type="text/javascript">
            // 1.单行IF-ELSE
            const age = 12;
            let ageGroup;
            // LONG FORM
            if (age > 18) {
            ageGroup = "An adult";
            } else {
            ageGroup = "A child";
            }
    
            // SHORTHAND
            ageGroup = age > 18 ? "An adult" : "A child";
    
           // 2.从数组中删除重复项
           // 在 JavaScript 中,Set 是一个集合,它允许你仅存储唯一值。这意味着删除任何重复的值。
           // 因此,要从数组中删除重复项,你可以将其转换为集合,然后再转换回数组。
           const numbers = [1, 1, 20, 3, 3, 3, 9, 9];
           const uniqueNumbers = [...new Set(numbers)]; // -> [1, 20, 3, 9]
    
        //    1)、new Set(numbers)从数字列表中创建一个集合。创建集合会自动删除所有重复值。
        //    2)、展开运算符...将任何可迭代对象转换为数组。这意味着将集合转换回数组。[...new Set(numbers)]
           
        // 3.较短的 If-Else 的空合并
        let maybeSomething;
        // LONG FORM
        if(maybeSomething){
        console.log(maybeSomething)
        } else {
        console.log("Nothing found")
        }
    
        //SHORTHAND
        console.log(maybeSomething ?? "Nothing found")
    
        // 4.防止崩溃的可选链
        //如果访问未定义的属性,则会产生错误。这就是可选链的用武之地。
        // 在未定义属性时使用可选链运算符,undefined将返回而不是错误。这可以防止你的代码崩溃。
         
         const student ={
            name: "Matt",
            age:27,
            address:{
                state: "New York"
            },
         };
         
         // LONG FORM
         console.log(student && student.address && student.address.ZIPCode);// 不存在则返回undefined
    
         // SHORTHAND
         console.log(student?.address?.ZIPCode);// 不存在返回undefined
    
         //5.在没有第三个变量的情况下交换两个变量
         // 在javascript中,可以使用解构从数组中拆分值。这可以应用于交换两个变量而无需第三个
         let x=1;
         let y =2;
    
         // LONGER FORM
         let temp =x;
         x=y;
         y = temp;
    
         //SHORTHAND
         [x,y] = [y,x];// 可以使用解构交换两个变量的值
    
         // 6.将任何值转换为布尔值:使用!!在JS中将任何内容转换为布尔值
         !!true // true
         !!2    // true
         !![] // true
         !!"Test" // true
         
         !!false   // false
         !!undefined // false
         !!0  // false
         !!"" // false
    
         // 7.扩展运算符
         // 使用扩展运算符组合两个数组
         const nums1 = [1,2,3];
         const nums2 = [4,5,6];
    
         // LONG FORM
         let newArray = nums1.concat(nums2);
    
         // SHORTHAND
         newArray = [...nums1,...nums2]
    
         //也可使用此语法代替将值推送到数组
         let numbers = [1,2,3];
    
         // LONGER FORM
         numbers.push(4);
         numbers.push(5);
    
         // SHORTHAND
         numbers = [...numbers,4,5]
    
        // 8.传播解构
        // 使用扩展运算符将剩余元素分配给变量
        const student  ={
            name: "Matt",
            age: 23,
            city: "ShangHai",
            state: "Finland",
        };
    
        // LONGER FORM
        const name = student.name;
        const age = student.age;
        const address = {city:student.city,state: student.state};
    
        // SHORTHAND
        const {name,age, ...address } = student;
    
        // 9.使用&& 进行短路评估:不必使用if语句检查某事是否为真,可以使用&& 运算符
        var isReady = true;
    
        function doSomething(){
            console.log("Yay!");
        }
    
        // LONGER FORM
        if(isReady){
           doSomething();
        }
    
        // SHORTHAND
        isReady && doSomething();
    
        // 10.类固醇的字符串
        const age = 41;
        const sentence = `I'm ${age} years old`;
        // result: I'm 41 years old
    
        // 11.从数组中查找特定元素: 使用find()方法查找匹配特定条件的元素
        const fruits = [
        { type: "Banana", color: "Yellow" },
        { type: "Apple", color: "Green" }
        ];
    
    
        // LONGER FORM
        let yellowFruit;
        for (let i = 0; i < fruits.length; ++i) {
        if (fruits[i].color === "Yellow") {
            yellowFruit = fruits[i];
        }
        }
    
        // SHORTHAND
        yellowFruit = fruits.find((fruit) => fruit.color === "Yellow");
    
        // 12.对象属性赋值:你是否希望对象键与值具有相同的名称?你可以省略对象文字来执行此操作:
        const name = "Luis", city = "Paris", age = 43, favoriteFood = "Spaghetti";
    
        // LONGER FORM
        const person = {
        name: name,
        city: city,
        age: age,
        favoriteFood: favoriteFood
        };
    
        // SHORTHAND
        const person = { name, city, age, favoriteFood };
    
        //13.压缩for循环:使用内置forEach()方法通过一行代码循环遍历数组:
        const numbers = [1, 2, 3, 4, 5];
    
        // LONGER FORM
        for(let i = 0; i < numbers.length; i++){
        console.log(numbers[i]);
        }
    
        // SHORTHAND
        numbers.forEach(number => console.log(number));
    
        // 14.默认功能参数:可以为函数参数提供默认值:
        // LONG FORM
        function pickUp(fruit) {
        if(fruit === undefined){
            console.log("I picked up a Banana");
        } else {
            console.log(`I picked up a ${fruit}`);
        }
        }
    
        // SHORTHAND
        function pickUp(fruit = "Banana") {
        console.log(`I picked up a ${fruit}`)
        }
    
        pickUp("Mango"); // -> I picked up a Mango
        pickUp();        // -> I picked up a Banana
    
        // 15.将对象的值收集到数组中:用于Object.values()将对象的所有值收集到一个新数组中
        const info = { name:"Matt",country:"Finland",age:35};
    
        // LONGER FORM
        let data = [];
        for(let key in info){
           data.push(info[key]);
        }
    
        // SHORTHAND
        const data = Object.values(info);//将对象的所有值收集到一个新数组中
    
        // 16.检查一个项目是否存在于数组中
        // 你可以使用 includes() 方法,而不是使用 indexOf() 方法来检查元素是否在数组中。这使你的意图非常明确:
        let numbers = [1,2,3];
    
        // LONGER FORM
        const hasNumber1 = numbers.indexOf(1) >-1;// true
        
        // SHORTHAND
        const hasNumber1 = numbers.includes(1);// true
    
        // 17.压缩多个条件:避免使用长|| 检查多个条件链
        const num = 1;
        // LONGER FORM
        if(num == 1 || num == 2 || num == 3){
        console.log("Yay");
        }
    
        // SHORTHAND
        if([1,2,3].includes(num)){
        console.log("Yay");
        }
    
        // 18.指数运算符:你Math.pow()习惯把一个数字提高到一个幂吗?你知道你也可以使用**运算符吗?
        
        // LONGER FORM
        Math.pow(4,2);// 16
        Math.pow(2,3);// 8
    
        //SHORTHAND
        4**2 ;// 16
        2**3;// 8
    
        // 19.Math.floor()简写:四舍五入Math.floor()并不是什么新鲜事。但是你知道你也可以使用~~运算符吗?
    
        // LONG FROM
        Math.floor(5.25); // 5.0
    
        // SHORTHAND
        ~~5.25; // 5.0
    
        // 20.用一行代码分配多个值: 使用解构语法在一行中分配多个值
        let num1,num2;
    
        //LONGER FORM
        num1 = 10;
        num2 = 100;
    
        //SHORTHAND
        [num1,num2] = [10,100];
    
        // 这也适用于使用JS对象
        student ={
            name: "Matt",
            age: 29,
        };
    
        // LONGER FORM
        let name = student.name;
        let age =student.age;
    
        // SHORTHAND
        let {name,age} = student;
        </script>
    </head>
    <body>
        
    </body>
    </html>
    
    “fool me once,shame on you. fool me twice, shame on me.”,翻译过来的意思是“愚弄我一次,是你坏;愚弄我两次,是我蠢”。
  • 相关阅读:
    设计模式学习系列3 观察者模式
    设计模式学习系列2 面向对象的5大原则(转)
    设计模式学习系列1 单例模式
    又见到面试的毕业生
    猎头给我打电话
    DirectX基础学习系列8 渐进网格以及外接体
    directX基础学习系列7 网格(自己创建)
    DirectX 基础学习系列6 字体
    语艺杂谈1 – MAP赋值与插入
    DirectX基础学习系列5 融合技术
  • 原文地址:https://www.cnblogs.com/newcapecjmc/p/15338276.html
Copyright © 2011-2022 走看看