避免前端开发的9个常见错误,让你的开发习惯更上一层楼!
发表时间: 2024-02-28 12:02
前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~
Hello,大家好,我是 Sunday。
在日常的开发中我们可能会经常遇到各种各样的奇怪 BUG,这些 BUG 很多时候都是因为我们的一些不规范的开发习惯所导致的。
那么如何避免不规范的开发习惯呢?
今天就带大家来看下:前端开发中常见的9个错误开发方式,帮你告别坏习惯!
// :忽略setTimeout的异步性质console.log("Start");setTimeout(() => console.log("Timeout"), 0);console.log("End");// :理解和处理异步代码console.log("Start");setTimeout(() => console.log("Timeout"), 0);Promise.resolve().then(() => console.log("Promise"));console.log("End");
// :声明的变量没有正确的作用域function incorrectScope() { for (var i = 0; i < 5; i++) { // “i”现在是全局的,而不是循环的局部 } console.log(i); // 输出 5}// :对块作用域变量使用‘let’function correctScope() { for (let i = 0; i < 5; i++) { // 'i'是循环块的本地值 } // console.log(i); // Error: 未定义‘i’}
// :使用事件侦听器创建内存泄漏function createMemoryLeak() { const element = document.getElementById("myElement"); element.addEventListener("click", function handleClick() { // ... }); // 忘记删除事件侦听器}// :删除事件侦听器以避免内存泄漏function avoidMemoryLeak() { const element = document.getElementById("myElement"); function handleClick() { // ...... } element.addEventListener("click", handleClick); // 在不再需要事件侦听器时将其删除 // element.removeEventListener("click", handleClick);}
// :错误处理不当function fetchData() { try { // 从API获取数据 fetch("https://api/data") .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.log(error.message)); } catch (error) { console.log("Error occurred:", error.message); // 这不会捕获获取错误 }}// :正确处理 HTTP 错误async function fetchDataCorrect() { try { const response = await fetch("https://api/data"); if (!response.ok) { throw new Error(`HTTP 错误! Status: ${response.status}`); } const data = await response.json(); console.log(data); } catch (error) { console.error("Error 处理:", error.message); }}
// :假设浏览器不需要兼容性处理document.getElementById("myElement").remove(); // 某些较旧的浏览器不支持// :使用前检查功能支持const element = document.getElementById("myElement");if (element && element.remove) { element.remove();} else { // 后备或替代方法 element.parentNode.removeChild(element);}
// :仅仅依赖于一个框架而不了解基础知识const element = React.createElement("div", null, "Hello, World!");ReactDOM.render(element, document.getElementById("root"));// :理解框架和基本原则const element = <div>Hello, World!</div>;ReactDOM.render(element, document.getElementById("root"));
// :循环使用效率低下const array = [1, 2, 3, 4, 5];for (let i = 0; i < array.length; i++) { console.log(array[i]);}// :使用forEach以获得更好的性能const array = [1, 2, 3, 4, 5];array.forEach(item => console.log(item));
// :跳过全面测试function add(a, b) { return a - b; // 错误逻辑}// :实现单元测试以捕获错误function add(a, b) { return a + b;}
// :没有注释function calculateTotal(price, quantity) { return price * quantity;}// :添加有意义的评论以更好地理解/** * 根据给定的价格和数量计算总成本。 * @param {number} price - 项目的单价。 * @param {number} quantity - 物品的数量。 * @returns {number} 总成本。 */function calculateTotal(price, quantity) { return price * quantity;}