优化代码分支

<script>
    function createElement(item) {
        if (item.type === 'ball') {
            const div = document.createElement('div');
            div.className = 'item ball';
            div.textContent = 'ball';
            return div;
        } else if (item.type === 'square') {
            const div = document.createElement('div');
            div.className = 'item square';
            div.textContent = 'square';
            return div;
        } else if (item.type === 'triangle') {
            const div = document.createElement('div');
            div.className = 'item triangle';
            div.textContent = 'triangle';
            return div;
        } else if (item.type === 'rectangle') {
            const div = document.createElement('div');
            div.className = 'item rectangle';
            div.textContent = 'rectangle';
            return div;
        } else {
            throw new Error('Invalid type');
        }
    };
    let obj = {
        'type': 'ball'
    };
    createElement(obj);
    console.log('createElement(obj);', createElement(obj));

</script>

简化思路:

1.提取出公共代码,

const div = document.createElement('div'); 

div.className = 'item';

return div;

2.添加类名为传入对象的type值,div的内容为传入对象的type值。

3.判断异常情况代码提前,当 throw 语句被执行时,它会立即抛出一个异常,并停止当前函数的执行。因此,如果执行了 throw new Error('Invalid type');,该语句后面的代码将不会执行。

<script>
    function createElement(item) {
        const validTypes = ['ball', 'square', 'triangle', 'rectangle'];
        if (!validTypes.includes(item.type)) {
            throw new Error('Invalid type');
        }
        const div = document.createElement('div');
        div.className = 'item';
        div.classList.add(item.type);
        div.textContent = item.type;
        return div;
    };
    let obj = {
        'type': 'ball'
    };
    createElement(obj);
    console.log('createElement(obj);', createElement(obj));
</script>

优化思路:用map结构优化if-else判断

1.写映射关系表,如果传入的数据不在map映射表中,抛出异常

2.添加类名,把map[item.type].className进行字符串的拼接

3.内容使用map映射表中对应的map[item.type].textContent

4.添加点击事件

5.将创建的 <div> 元素添加到<body> 元素中,设置样式,这样 <div> 元素就会在页面上显示出来了。

<script>
    const map = {
        ball: {
            className: 'c-b',
            textContent: '小球',
            click() {
                console.log('this is a ball');
            }
        },
        square: {
            className: 'c-s',
            textContent: '正方形',
            click() {
                console.log('this is a square');
            }
        },
        triangle: {
            className: 'c-t',
            textContent: '三角形',
            click() {
                console.log('this is a triangle');
            }
        },
        rectangle: {
            className: 'c-r',
            textContent: '矩形',
            click() {
                console.log('this is a rectangle');
            }
        }
    };

    function createElement(item) {
        if (!map[item.type]) {
            throw new Error('Invalid type');
        }
        const div = document.createElement('div');
        div.className = `item ${map[item.type].className}`;
        div.textContent = map[item.type].textContent;
        div.onclick = map[item.type].click;
        return div;
    };
    let obj = {
        'type': 'ball'
    };
    createElement(obj);
    document.body.appendChild(createElement(obj));
    console.log('createElement(obj);', createElement(obj));
</script>

相关推荐

  1. 优化代码分支

    2024-03-31 23:06:03       20 阅读
  2. 前端代码优化

    2024-03-31 23:06:03       13 阅读
  3. [C++] 分支优化

    2024-03-31 23:06:03       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 23:06:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 23:06:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 23:06:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 23:06:03       20 阅读

热门阅读

  1. c语言:把百分制转化为等级制度(switch语句)

    2024-03-31 23:06:03       21 阅读
  2. 搭建语音打电话机器人需要哪些技术和资源

    2024-03-31 23:06:03       17 阅读
  3. 座次问题(蓝桥杯)

    2024-03-31 23:06:03       16 阅读
  4. css页面搭建案例

    2024-03-31 23:06:03       15 阅读
  5. 输入 wo xiang he ni jao peng you.,倒着打。

    2024-03-31 23:06:03       17 阅读
  6. NC20128 不重复数字

    2024-03-31 23:06:03       16 阅读
  7. ES6:Map()与WeakMap()

    2024-03-31 23:06:03       15 阅读