资讯专栏INFORMATION COLUMN

体验jaivascript之美第二课 全局对象、外部环境、声明提升

icyfire / 1441人阅读

摘要:全局对象在程序任何地方都能访问到的对象,在浏览器中是变量指向在中是什么外部环境暂时不讲。函数声明直接提前。执行过程,函数执行和销毁过程。变量预解析,赋值外部环境之间的关系。如果做不对,继续找,直到合格。

当程序在浏览器中运行的时候,js引擎会产生三个东西。


1.全局对象 在js程序任何地方都能访问到的对象,在浏览器中是window

2.this 变量指向window

在nodejs中 this是什么?

3.外部环境

暂时不讲。

一图抵万言

好,我知道js引擎怎么折腾你的代码,那么我们看看执行上下文,也就是管理正在运行的程序的部分是如何工作的。

不废话是时候该上代码了。

console.log(a);
var a =12;
b();
function b(){
  console.log(5);
}

结果是啥你想对了没?

为什么这样?

因为有一个变量声明提升的过程。

记住一句话,变量声明提前,赋值原地不动。函数声明直接提前。

这里再来一个问题为什么这样?

说这个之前先说一个例子,

console.log(a);![js运行原理创建](/Users/L/腾讯课堂/深入了解js/js运行原理创建.png)![js运行原理创建](/Users/L/腾讯课堂/深入了解js/js运行原理创建.png)
b();
functon b(){
  console.log(5);
}

这里要注意,undefined,是一个值,不等于不定义变量

程序执行和人眼阅读类似,从上到下,从左到右,执行过去的不会再回去执行一遍。

执行过程,函数执行和销毁过程。

函数就像刷盘子,你懂得,后进先出。

变量预解析,赋值外部环境之间的关系。

为什么有预解析。

ES6作用域,let关键字 块级作用域

var

let

作业:寻找各大公司函数预解析题目10道题,要求做对8道。如果做不对,继续找,直到合格。

如有疑问加入和更多资料,**

QQ群:552079864

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82528.html

相关文章

  • 入门nodeJs(二课

    摘要:模块化可以有多种形式,但是至少应该提供能够将代码分割为多个源文件的机制。规范规范的提出,主要为了弥补当前没有标准的缺陷。规范为指定了美好的愿景,希望能够在任何地方使用。学完了得练一练吧,干起来定义引入执行结果搞定不积跬步无以至千里 一、commonJs规范 说到commonjs的规范,为什么会有这个东西的出现呢?这就不得不说ECAMAScript的缺陷,那么有什么缺陷,如下几点: 1、...

    Mertens 评论0 收藏0
  • 体验javascript之美第四课--函数、函数表达式、闭包

    摘要:大彬哥版权所有翻录必究尼古拉斯屌大彬哥群尼古拉斯屌大彬哥函数声明函数表达式是不是简单的让人发指区别就一句话,函数声明,可以在函数调用之后,因为有函数预解析。而函数表达式必须在调用之前。 通过前三课讲解,大家应该能做到 1.手里有一份随时能够换工作自信的简历 2.知道了学习js的正确姿势 3.理解了全局对象、全局上下文、知道有预解析同时做了至少50道面试题 4.能熟练的使用json构建...

    Doyle 评论0 收藏0
  • 为 Vue3 学点 TypeScript, 什么是命名空间(namespace)

    摘要:往期目录第一课体验第二课基础类型和入门高级类型第三课什么是泛型第四课解读高级类型第五课什么是命名空间什么时候要用命名空间如果你发现自己写的功能函数类接口等越来越多你想对他们进行分组管理就可以用命名空间下面先用类举例仔细看你会发现下还有在这里 往期目录 第一课, 体验typescript 第二课, 基础类型和入门高级类型 第三课, 什么是泛型? 第四课, 解读高级类型 第五课, 什么是命...

    greatwhole 评论0 收藏0
  • 百度前端学院-基础学院-二课

    摘要:具体来说,新建的规则有新特性应该基于以及。,标签都是用来干嘛的是提供关于的元数据,不会显示在页面上,但是对于机器是可读的。元数据可用来浏览器如何显示内容或重新加载页面,用于搜索引擎关键字。 HTML是什么,HTML5是什么 HTML元素标签、属性都是什么概念? 文档类型是什么概念,起什么作用? meta标签都用来做什么的? Web语义化是什么,是为了解决什么问题 链接是什么概念,对应什么标签...

    stormzhang 评论0 收藏0
  • ES5和ES6作用域详解

    摘要:允许在块级作用域内声明函数。上面代码中,存在全局变量,但是块级作用域内又声明了一个局部变量,导致后者绑定这个块级作用域,所以在声明变量前,对赋值会报错。 ES5的作用域 变量起作用的范围,js中能创建作用域的只能是函数 { let a = 1; var b = 2; } console.log(a); // a is not defined console.log(b); //...

    Dr_Noooo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<