1
文 / 景朝霞
来源公号 / 朝霞的光影笔记
ID / zhaoxiajingjing
图 / 自己画
❥❥❥❥点个赞,让我知道你来过~❥❥❥❥

前情提要:

  1. 题目 | let和var的区别(一、二)
  2. 图解 | let和var的区别(一、二)

1 /

请回答

a = 1;
console.log(a);
console.log(window.a);
var b = 2;
console.log(b);
console.log(window.b);

2 /

带var和不带var的区别

来,看图说话

题目 | 带VAR和不带VAR的区别
△ 题目 | 带VAR和不带VAR的区别

图解 | 带VAR和不带VAR的区别
△图解 | 带VAR和不带VAR的区别

在执行栈内存中,会声明一个GO(global object)全局对象。浏览器默认把它指向window对象,node默认把它指向global对象。

在window对象上会有常用的方法或属性:window.setTimeout、window.alter、window.innerHeight ...

那么,在全局作用域中:

  1. 不带VAR的,相当于给全局对象window设置了一个属性,即:window.xxx。
  2. 带VAR的,是在全局作用域下声明了一个变量。同时,也在window上增加了一个对应的属性。

注意:栈内存&堆内存可以存储的东西

3 /

动动手,画一画

看着都不难,其实也不难~~~~

把想到的东西转换成文字描述出来,写下来吧~

  1. 结果?
console.log(a);
var a = 1;
a = 2;
console.log(a);
  1. 结果?
console.log(a);
a = 1;
console.log(a);
  1. 结果?
console.log(a);
let a = 1;
a = 2;
console.log(a);

4 /

预告:记住他们

  • prop in object
  • obj.hasOwnProperty(prop)

沟通交流

ID :zhaoxiajingjing
△ 文章首发


Pink
269 声望14 粉丝

没有什么是20遍解决不了的,如果有~那就再写20遍