JavaScript 自测题1

什么是作用域:

浏览器给js的生存环境叫作用域。

什么是变量提升:

  1. Js代码执行前,浏览器会给一个全局作用域window

  2. Window分两个模块一个是存储模块一个是执行模块

  3. 存储模块找到所有的var和function 关键字给这些变量添加内存地址

  4. 执行模块,代码从上到下执行,遇到变量就会去存储模块查找,有和没有

  5. 有就看你赋值没有,赋值了就是后面的值没有赋值就是undefined。

  6. 没有结果就是xxx is not defined

什么是原型链?

函数内部的变量被使用时,首先会在自己的私有作用域下查找是否有这个变量,有就直接使用,没有就向他的上一级查找,父级有就使用父级的,父级没有就以此继续向上查找直到查找带window有就使用没有就是is not defined。这种查找机制我们叫原型链。

  • 例题:
1
2
3
4
5
6
7
8
9
10
alert(a);
a();
var a = 3;
function a() {
/* body... */
alert(10);
}
alert(a);
a = 6;
a();
  • 分析图:

kyrie irving

  • 例题:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var x = 1,
y = 0,
z = 0;
function add(x) {
/* body... */
return (x = x + 1);
};
y = add (x);
console.log(y);
function add(x) {
return (x = x + 3);
};
z = add(x);
console.log(z);
  • 分析图:

kyrie irving