当前位置:首页 > 数码 > 个常见的-错误-及其解决方法-Node.js-19-JavaScript-和 (常见的错误)

个常见的-错误-及其解决方法-Node.js-19-JavaScript-和 (常见的错误)

admin8个月前 (05-06)数码33

1. 变量声明与作用域的不恰当使用

在 JavaScript 中,全局变量可能会带来副作用。最好的做法是在函数作用域内声明局部变量。

    //globals.js
    var color = 'blue';

    function printColor() {
      console.log(color);
    }

    printColor(); // 输出 blue
    

另一种更好的做法是将全局变量的使用限制在配置常量,并确保其他变量在尽可能小的作用域内被声明。


JavaScript

2. DOM 操作的效率问题

批量更改 DOM 元素而不是一次只操作一个节点可以提高性能。构建字符串然后通过 .innerHTML 设置也是一种好方法,因为它可以减少回流。

    // 逐个添加列表项
    const ul = document.getElementById('list');

    for (let i = 0; i < 10; i++) {
      const li = document.createElement('li');
      li.textContent = i;
      ul.appendChild(li);
    }

    // 使用 .innerHTML 设置
    const ul = document.getElementById('list');
    let html = '';

    for (let i = 0; i < 10; i++) {
      html += `<li>${i}</li>`;
    }

    ul.innerHTML = html;
    

3. DOM 操作的过度使用

频繁地更新 DOM 会对性能产生严重影响。最好只在必要时更新 DOM,并尽可能批量应用更改。

    // 不推荐的做法
    // 收到新消息
    const msg = `<div>${messageText}</div>`;
    chatLog.insertAdjacentHTML('beforeend', msg);

    // 推荐的做法
    // 收到多条新消息
    const messages = [];
    for (let i = 0; i < 10; i++) {
      messages.push(`<div>${messageText}</div>`);
    }

    chatLog.insertAdjacentHTML('beforeend', messages.join(''));
    

4. 事件监听程序的滥用

频繁添加和移除事件监听程序会导致性能问题。考虑使用事件委托或一次性添加多个事件监听程序。

    // 滥用事件监听程序
    const button = document.getElementById('button');

    for (let i = 0; i < 100; i++) {
      button.addEventListener('click', () => {
        console.log('Button clicked!');
      });
    }

    // 更好的做法
    const button = document.getElementById('button');

    button.addEventListener('click', () => {
      console.log('Button clicked!');
    });
    

通过识别并解决这些隐性性能陷阱,你可以打造真正高性能的 Web 应用,为用户提供流畅且响应迅速的体验。


nodejs_bug修复

1、Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory <--- Last few GCs ---> [3628F] ms: Mark-sweep 2045.8 (2063.6) -> 2045.7 (2061.1) MB, 823.6 / 0.0 ms(+ 217.9 ms in 2 steps since start of marking, biggest step 217.9 ms, walltime since start of marking 1052 ms) (average mu = 0.052, current mu = 0.011) <--- JS stacktrace ---> ==== JS stack trace ========================================= Security context: 0xba1 <JSObject> 1: parseMessage [F1DB3371] [C:\Platform\node\service\node_modules\pg\lib\:~377] [pc=DA566DDB0](this=0x03d27f47c261 <Connection map = A6A060F51>,0x03e134ba35c9 <Uint8Array map = A6A>) 2: /* anonymous */ [ACD5EAF31] [C:\Platform\node\service\node_modules\pg\lib\:~119] [pc=DA56... FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 1: FF78BAC094F napi_wrap+ 2: FF78BA v8::base::CPU::has_sse+ 3: FF78BA v8::base::CPU::has_sse+ 4: FF78C266F4E v8::Isolate::ReportExternalAllocationLimitReached+94 5: FF78C24EF91 v8::SharedArrayBuffer::Externalize+833 6: FF78C11C85C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1436 7: FF78C127C00 v8::internal::Heap::ProtectUnprotectedMemoryChunks+1312 8: FF78C v8::internal::Heap::PageFlagsAreConsistent+3204 9: FF78C119FC3 v8::internal::Heap::CollectGarbage+1283 10: FF78C v8::internal::Heap::AddRetainedMap+2356 11: FF78C v8::internal::Factory::NewRawOneByteString+83 12: FF78C1434D2 v8::internal::Factory::NewStringFromUtf8+130 13: FF78CA v8::String::NewFromUtf8+298 14: FF78B9D76EF node::tracing::TraceEventHelper::SetAgent+ 15: FF78BA79BFD v8::internal::Malloced::operator delete+1661 16: FF78CC v8::internal::SetupIsolateDelegate::SetupHeap+: DA566DDB0 2、<--- JS stacktrace ---> Cannot get stack trace in GC. FATAL ERROR: MarkCompactCollector: semi-space copy, fallback in old gen Allocation failed - JavaScript heap out of memory 这个问题是node内存泄漏造成的。 因为node是单线程的,所有的访问走的一个线程,如果执行完一个,占用内存增加,但是没有释放的话,就造成内存泄漏,内存泄漏其实就是存储泄漏,而造成的原因就是内存分配超过了v8内存的限制数量,而且进程所占用的内存,并没有慢慢释放回来, 解决办法:node --max-old-space-size=6096

win7系统安装node.js报错的解决方法

最近有win7旗舰版64位系统用户到本站反映说遇到这样一个情况,就是在安装之后,要确认是否安装成功,然后在控制台输入命令来显示node的版本,但是却遇到了报错的情况,该如何处理呢,本文就给大家讲解一下win7系统安装报错的解决方法吧。 1、通过网络下载适合电脑系统的软件。 这里使用的是win7的32位系统,所以需下载是个本系统的软件——node-v0.10.26-x86;2、双击进行安装,根据步骤向下走即可。 小编这里是安装在D盘的;3、安装成功后,点击电脑左下角的Windows图标,在弹出的菜单内点击【运行】;4、在【运行】界面的打开文本框内输入:cmd然后点击【确定】按钮;5、在弹出的控制台界面内输入:node-v然后敲回车键,会报不是内部或外部命令错误;6、在桌面的【计算机】图标上点击右键,选择【属性】项目;7、在弹出【系统】界面,点击左侧的【高级系统设置】选项;8、在弹出的【系统属性】界面,点击【环境变量】按钮;9、在【环境变量】界面找到【系统变量】部分,在【系统变量】里面找到【Path】变量,然后点击【编辑】按钮;10、在【编辑系统变量】界面将【变量值】里面的:D:\ProgramFiles\nodejs\最后的斜杠去掉,修改为D:\ProgramFiles\nodejs然后依次点击【确定】按钮保存设置;11、再到控制台输入:node-v然后敲回车键,会显示node的版本信息。 说明安装成功了。 上述给大家介绍的就是关于win7系统安装报错的解决方法,有遇到同样问题的用户们可以按照上面的方法步骤来操作,希望本教程可以帮助到大家。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: JavaScript

“个常见的-错误-及其解决方法-Node.js-19-JavaScript-和 (常见的错误)” 的相关文章

代码压缩的好处-JavaScript-好处 (代码压缩原理)

代码压缩的好处-JavaScript-好处 (代码压缩原理)

压缩 JavaScript 代码是提高网页性能和用户体验的重要手段之一。通过减少代码的大小,压缩可以加快加载时间,从而改善网页的响应速度,并提升用户满意度。 压缩的好处 提高性能...

了解JavaScript中最经常出现的13个字符串方法 (了解java是什么程度)

了解JavaScript中最经常出现的13个字符串方法 (了解java是什么程度)

在Script中提供了一组丰盛的方法来操作和处置字符串。在这篇文章中,我将向您引见13个最罕用的JavaScript字符串方法及其配置。 Stringlength 假设你想找到一个字符...

关键面向数据中心和企业级运行-能够成功高度复杂的义务-GeminiUltra版本配置最强大 (面向对象关键字)

关键面向数据中心和企业级运行-能够成功高度复杂的义务-GeminiUltra版本配置最强大 (面向对象关键字)

在把握如何编写Script代码之后,那么就进阶到通常——如何真正地处置疑问。咱们须要更改JS代码使其更繁难、更易于浏览,由于这样的程序更易于团队成员之间严密单干。 当天,咱们将引见15个最佳...

JavaScript-崛起成为下一个网络巨星-王权岌岌可危-WasmGC (javascript)

JavaScript-崛起成为下一个网络巨星-王权岌岌可危-WasmGC (javascript)

WebAssembly (Wasm) is a binary instruction format for a stack-based virtual machine. It is design...

什么是JavaScript严厉形式 (什么是java)

什么是JavaScript严厉形式 (什么是java)

严厉形式是ECMAScript5引入的一种运转形式,可以让Script在愈加严厉的条件下运转。它经过参与一个特定的编译批示符(即"usestrict")来启用。严厉形式可以让代码中一些不安保的行为...

JavaScript-设计形式 (javascript指什么)

JavaScript-设计形式 (javascript指什么)

便捷工厂形式 形象各个对象的独特点,加工出最后外形,关于不同点启动独立设计。 functioncreateBook(name,time,type){//创立一个对象,并对对象拓展属性和方法...

编程黄金组合-JavaScript与ECMAScript-探索它们的联系和区别 (编程黄金组合图片)

编程黄金组合-JavaScript与ECMAScript-探索它们的联系和区别 (编程黄金组合图片)

JavaScript 是一种脚本编程语言,而 ECMAScript 则是一种标准,用于规范 JavaScript 的语法和行为。JavaScript 是基于 ECMAScript 标准的实现,它包...