作用域
-
JavaScript 提升
JavaScript 中的变量和函数声明会发生“提升”(hoisting)。这意味着声明会被移动到作用域的顶部,即使它们在代码中实际出现的位置更靠后。但这只影响声明本身,而不影响赋值。 JavaScript 的提升分为两种类型: 函数提升 (Function Hoisting): 使用 functi…
-
闭包到底是什么?(简单的 JS 定义)
还记得我第一次工作面试吗?面试官让我解释闭包。那简直是一场噩梦,因为我当时不懂那些专业术语。但直觉上,我觉得自己理解了它的含义,即使无法言表。 面试结束后(剧透:我没被录用),我赶紧谷歌搜索闭包相关资料。第一个遇到的术语就是词法作用域——啥玩意儿? 别担心,词法作用域其实很简单! 让我们一步步深入了…
-
JavaScript 变量
JavaScript 中的 var、let 和 const 声明:详解其差异 var: var 是 ES6 之前的旧式声明方式。它允许重复声明,也允许重新赋值。 var a = 5; // 声明a = 6; // 重新赋值var a = 7; // 重复声明(允许) let: let 声明的变量不允…
-
了解 JavaScript 中的内存管理和垃圾收集
高效的 JavaScript 代码离不开对内存管理的理解。本文将深入探讨 JavaScript 的内存分配、管理和垃圾回收机制,并通过示例讲解如何编写更高效、更稳定的代码,避免常见的内存问题。 JavaScript 内存生命周期 JavaScript 内存管理包含三个关键阶段: 分配: 为变量和数据…
-
在 JavaScript 中创建对象:闭包、原型和 ESlasses
JavaScript 提供多种创建对象的方式,各有优劣及适用场景。本文将通过示例讲解三种常用方法:闭包、原型和 ES6 类。 1. 使用闭包 闭包是指能够访问其词法作用域中变量的函数。利用此特性,我们可以将数据封装在函数内部。 function createPerson(name) { let ag…
-
JavaScript 执行上下文 – JS 代码如何在幕后运行
理解javascript执行上下文前,需先了解javascript代码运行环境:浏览器和node.js。 JavaScript代码运行时,会先被浏览器或Node.js内置的JavaScript引擎(如Chrome的V8引擎、Firefox的SpiderMonkey引擎)处理。引擎将代码编译成机器码,…
-
mise 与 asdf 用于 JavaScript 项目环境管理
asdf 与 mise:多版本编程语言和环境管理工具对比 asdf 和 mise 都是旨在简化多语言开发中工具版本管理的优秀工具,它们通过简化不同版本工具间的切换来解决多语言开发的常见难题。两者都支持多种编程语言和框架,但实现方式有所不同,导致性能和易用性上存在差异。 asdf:基于 shimmin…
-
掌握高级 JavaScript:关键主题和面试问题
JavaScript 作为现代 Web 开发的核心语言,深入理解其高级特性对于成为优秀开发者至关重要。本文将探讨 JavaScript 中的关键高级主题,并提供面试常见问题及解答,助您在面试中展现实力。 1. 闭包 (Closures) 闭包是什么? 闭包是指函数能够访问其词法作用域之外的变量的特性…
-
关于在 Cypress &#within()&# 块中主动命名元素
在 Cypress 测试中使用 .within() 方法时,始终为传入函数体内的元素命名是一个最佳实践,即使该变量在函数体内部没有直接使用。 示例: cy.get(‘#el’).within((‘myElement’) => { cy.log(‘foo’);}); 即使函数体中没有用到 myE…
-
JavaScript 中的提升:可能会欺骗你的简单概念
JavaScript 提升是面试中常见的考点,看似简单,实则容易迷惑初学者和经验丰富的开发者。本文将深入浅出地讲解 JavaScript 提升机制,并帮助你避免常见的陷阱。 什么是提升? JavaScript 的提升机制在编译阶段,也就是代码执行之前,将变量和函数声明移动到其作用域(脚本或函数)的顶…