javascript中一些难以理解的专有名词 1(也不是很专有)

2023-08-30

变量提升

变量提升:是指js代码执行过程中,js引擎把变量的声明和函数的声明提升到代码的开头的“行为”。
变量和函数在代码里的位置是不会变的,而是在编译阶段被js引擎放入内存中。
变量提升后,会给变量设置默认值,undefined。
带来的问题
变量会被覆盖

  foo()   // foo2
function foo() { console.log('foo1') }
function foo() { console.log('foo2') }

应该销毁但没有销毁

  function foo() {
for(var i = 0;i < 10;i++) {}
console.log(i) //10
}
foo()

执行上下文

执行上下文是js执行一段代码时的运行环境
执行上下文的种类
全局执行上下文(在整个页面的生存周期内)
函数执行上下文(调用一个函数的时候,函数体里面的代码被编译,会创建函数执行上下文,函数执行结束,会销毁(一般情况下))
eval执行上下文(用的很少)

调用栈

用来管理函数调用关系的ds

作用域

作用域:在程序中定义变量的区域,该区域决定了变量的声明周期
人话: 变量和函数的可访问范围
作用域控制变量和函数的可见性和声明周期
种类:
全局作用域 : 代码中任何地方都可以访问到这个作用域。生命周期最长
函数作用域 : 函数内部定义的变量或函数,并且定义的变量或函数只能在函数内部访问,函数执行结束后,会被销毁。
块级作用域 : 作用块内声明的变量不影响块外面的变量(let 和 const 都可以形成块级作用域 )。
e.g

  function foo() {
var a = 1;
let b = 2;
{
let b = 3;
var c = 4;
let d = 5;
console.log(a);
console.log(b);
}
console.log(b);
console.log(c);
console.log(d);
}
foo()

var 声明的 ,会被放到变量环境里面(es6) es3 放到变量对象里
let 声明的, 会被放到词法环境中
在函数的作用域内部,通过let声明的变量并没有被存放到词法环境中

javascript中一些难以理解的专有名词 1(也不是很专有)的相关教程结束。

《javascript中一些难以理解的专有名词 1(也不是很专有).doc》

下载本文的Word格式文档,以方便收藏与打印。