JavaScript 知识量:26 - 101 - 483
JavaScript的执行上下文(Execution Context)是JavaScript代码在执行时的环境。每个JavaScript代码块在执行时都会创建一个新的执行上下文。
执行上下文主要有三种类型:
全局执行上下文:这是默认或者基础的执行上下文。所有的JavaScript代码都在全局上下文中执行。它包含两个重要的对象:全局对象和this关键字。
函数执行上下文:每当一个函数被调用时,都会为该函数创建一个新的执行上下文。每个函数都有自己的执行上下文,但在创建时,会从全局上下文中继承一些变量和函数。
Eval函数上下文:在eval函数内部执行的代码也会创建一个新的执行上下文,但这种上下文与函数执行上下文略有不同。
每个执行上下文都有以下结构:
变量对象(Variable Object):包含了函数的参数、内部变量和函数声明。
作用域链(Scope Chain):用于解析变量名的链式结构。当变量需要被检索时,JavaScript引擎会在作用域链上进行查找。
this值:在非严格模式下,全局执行上下文中的this值是全局对象(在浏览器中是window对象)。在函数执行上下文中,this值取决于函数是如何被调用的。
闭包:闭包是函数可以记住并访问其词法作用域,即使该函数在其词法作用域之外执行。闭包是由两部分组成的:一个是闭包定义(code),一个是闭包的环境(environment)。闭包的环境就是变量对象和作用域链的组合。
JavaScript引擎会为每个执行上下文分配内存空间,包括变量对象、作用域链、this值和闭包等。当代码块开始执行时,就会创建一个新的执行上下文,当代码块执行完毕后,对应的执行上下文就会被销毁。
在JavaScript中,可以使用var,let,和const关键字来声明变量。以下是具体的声明方式:
1. var关键字:这是最早的JavaScript变量声明方法。例如,可以这样声明一个变量:
var x = 10;
在函数内部或全局作用域内,也可以这样声明变量:
function test() { var x = 10; } var y = 20;
使用var声明的变量在声明后会立即被创建,并被赋值undefined。
2. let关键字:let是ES6引入的新特性,用于声明块级作用域变量。例如:
let y = 20;
在块级别作用域(比如一个if语句,一个for循环,或者一个函数)内部可以声明块级作用域变量:
if (true) { let x = 10; }
使用let声明的变量在声明后会被立即创建并赋值undefined。与var不同,let声明的变量在声明时不能进行初始化。
3. const关键字:const也是ES6引入的新特性,用于声明块级作用域常量。例如:
const PI = 3.14159;
在块级别作用域(比如一个if语句,一个for循环,或者一个函数)内部可以声明块级作用域常量:
if (true) { const x = 10; }
使用const声明的变量在声明后会立即被创建并赋值undefined。与var和let不同,const声明的变量是一个只读的常量。一旦赋值后,就不能改变其值。如果试图改变其值,JavaScript会抛出一个错误。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6