mirror of
https://github.com/kjanat/livedash-node.git
synced 2026-02-13 23:35:45 +01:00
- Update tsconfig to ES2024 target and bundler moduleResolution - Add dynamic imports for chart.js and recharts (bundle optimization) - Consolidate 17 useState into useReducer in sessions page - Fix 18 .js extension imports across lib files - Add type declarations for @rapideditor/country-coder - Fix platform user types (PlatformUserRole enum) - Fix Calendar component prop types - Centralize next-auth type augmentation - Add force-dynamic to all API routes (prevent build-time prerender) - Fix Prisma JSON null handling with Prisma.DbNull - Fix various type mismatches (SessionMessage, ImportRecord, etc.) - Export ButtonProps from button component - Update next-themes import path - Replace JSX.Element with React.ReactElement - Remove obsolete debug scripts and pnpm lockfile - Downgrade eslint to v8 for next compatibility
29 lines
532 B
Markdown
29 lines
532 B
Markdown
---
|
||
title: Cache Property Access in Loops
|
||
impact: LOW-MEDIUM
|
||
impactDescription: reduces lookups
|
||
tags: javascript, loops, optimization, caching
|
||
---
|
||
|
||
## Cache Property Access in Loops
|
||
|
||
Cache object property lookups in hot paths.
|
||
|
||
**Incorrect (3 lookups × N iterations):**
|
||
|
||
```typescript
|
||
for (let i = 0; i < arr.length; i++) {
|
||
process(obj.config.settings.value)
|
||
}
|
||
```
|
||
|
||
**Correct (1 lookup total):**
|
||
|
||
```typescript
|
||
const value = obj.config.settings.value
|
||
const len = arr.length
|
||
for (let i = 0; i < len; i++) {
|
||
process(value)
|
||
}
|
||
```
|