96SEO 2026-06-16 02:30 12
说实话,JavaScript 的执行环境和作用域这块内容真的是老生常谈了但咱就是说每次回头kan还是会有新的理解。
先来聊聊执行上下文// 执行上下文示例
function foo {
console.log;
bar;
}
function bar {
console.log;
}
foo;
// 调用栈过程:
// . 全局执行上下文入栈
// . foo 执行上下文入栈
// . bar 执行上下文入栈
// . bar 执行完成出栈
// . foo 执行完成出栈
// . 全局执行上下文出栈
每个执行上下文包含:变量环境、词法环境、外部环境引用等。

变量提升是指 JavaScript 在编译阶段将变量和函数声明移动到其作用域顶部的行为。
showName;
console.log;
var name = '路明非';
function showName{
console.log;
}
// 实际执行顺序:
// function showName{ console.log; }
// var name; // 提升但未赋值
// showName; // 输出:函数showName 执行了
// console.log; // 输出:undefined
// name = '路明非';
运行结果:
函数showName 执行了
undefined
变量提升的设计原因
JavaScript Zui初是为了给页面添加简单的动态效果,设计周期极短。为了快速实现,采用变量提升是Zui简单的方式:
害,说白了就是当年设计得太快了没考虑那么多。
三、作用域类型 . 全局作用域在任何地方douNeng访问,生命周期等于页面生命周期。
var globalVar = "我是全局变量"; // 全局作用域
function myFunction {
console.log; // Ke以访问
}
myFunction;
console.log; // Ke以访问
. 函数局部作用域
只Neng在函数内部访问,生命周期等于函数执行周期。
var globalVar = "我是全局变量";
function myFunction {
var localVar = "我是局部变量";
console.log; // 输出:我是全局变量
console.log; // 输出:我是局部变量
}
myFunction;
console.log; // 输出:我是全局变量
console.log; // 报错:localVar is not defined
运行结果:
我是全局变量
我是局部变量
我是全局变量
ReferenceError: localVar is not defined
四、ES6 如何实现块级作用域
一国两制:变量环境 + 词法环境
JavaScript 采用"一国两制"策略,在同一套执行上下文中用变量环境和词法环境分别处理 var 和 let/const,既保持了向下兼容,又实现了geng合理的块级作用域。
| 声明方式 | 存放位置 | 特性 |
|---|---|---|
var | 变量环境 | 变量提升、函数作用域 |
let/const | 词法环境 | 暂时性死区、块级作用域 |
执行到块级作用域时let/const 声明的变量会被放入词法环境的一个独立区域,形成栈结构。
块级作用域示例
function foo {
var a = ; // 变量环境
let b = ; // 词法环境
{
let b = ; // 词法环境
var c = ; // 变量环境
let d = ; // 词法环境
console.log; //
console.log; //
}
console.log; //
console.log; //
// console.log; // 报错:d is not defined
}
foo;
顺便提一下你有没有遇到过百度不收录某些网站的情况? 主要是因为网站内容质量、结构等问题导致的。 高质量的内容是关键,你懂的。 说实话,这事儿挺复杂的,但咱就是说多优化总是好的。
五、var 与 let 的核心区别| 特性 | var | let / const |
|---|---|---|
| 作用域 | 函数作用域 | 块级作用域 |
| 变/常量提升 | 是 | 是但未初始化 |
| 重复声明 | 允许 | 不允许 |
全局声明挂载到 window | 挂载到 window | 不挂载到 window |
| 暂时性死区 | 无 | 有 |
不对不对,应该是说 let 和 const geng安全些。
因为它们不会被重复声明啥的。
你会发现,用 let 和 const Neng避免hen多奇怪的问题。
比如说:
// ✅推荐:使用 let/const避免变量提升问题
let name ='张三 ';
if{
let name ='李四 ';
console . log ;//李四
}
console . log ;//张三
//❌不推荐:依赖变量提升
console . log ;//undefined
var x =;
//✅推荐:先声明再使用
let y =;
console . log ;//10
y ++;
if{
const MAX _VALUE=;
console . log ;//
}
为啥呢?
因为 let 和 const 会让代码geng可控,不容易出那些莫名其妙的 bug。
所以啊,现在基本上dou推荐用 let 和 const 了hen少有人再用 var 了你懂的。
主要还是因为 let 和 const geng符合现代编程规范嘛。
总之呢,了解 JavaScript 的执行环境和作用域还是hen重要的,这Neng帮助我们写出geng靠谱的代码。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback