基本概念
- 作用域
- 词法作用域
- 函数级作用域和块级作用域
- 作用域提升
- 作用域闭包
作用域简单地理解就是变量的可访问范围,词法作用域也称静态作用域,强调编码决定作用域范围而与运行时无关,js使用的是词法作用域
函数级作用域指函数内定义的变量在函数体范围内有效
let const具备块级作用域,通常是大括号的范围
var在运行时具有声明提前的作用,但不会突破函数级作用域或者块级作用域
题目1
1 | function t1(){ |
调用t1();输出
1 | undefined |
关键字var提示js编译器词法分析对变量进行声明,没有该关键字,分析认为是单纯赋值操作;执行时自上而下,输出str1时未赋值,其值为undefined,而str2为未声明。
题目2
1 | var i=10; |
调用t2()输出10。
this指向window对象