IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 讲讲JavaScript 中的作用域、预解析与变量声明提升~ -> 正文阅读

[JavaScript知识库]讲讲JavaScript 中的作用域、预解析与变量声明提升~

写在前面

? ? ? ? 朋友萌,又又又又见面啦。我争取在12点前写出来,应该有人会看吧?不会吧不会吧?不会没人看我写博客吧?

? ? ? ? 今天讲js中的作用域,预解析与变量声明提升,要好好学习嗷,面试要考嗷。

作用域

????????就是变量的有效范围。 在一定的空间里可以对数据进行读写操作,这个空间就是数据的 作用域。

1、全局作用域:

????????最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是 可以访问的;

2、局部作用域:

????????局部作用域一般只在固定的代码片段内可访问到,而对于函数外部是无 法访问的,最常见的例如函数内部。在 ES6 之前,只有函数可以划分变量的作用域,所以 在函数的外面无法访问函数内的变量。

3、块级作用域:

????????凡是代码块就可以划分变量的作用域,这种作用域的规则就叫块级作用域 块级作用域 函数作用域 词法作用域之间的区别:

????????3.1)块级作用域和函数作用域描述的是,什么东西可以划分变量的作用域

????????3.2)词法作用域描述的是,变量的查找规则

之间的关系:

????????1、 块级作用域 包含 函数作用域

????????2、 词法作用域 与 块级作用域、函数作用域之间没有任何交集, 他们从两个角度描 述了作用域的规则

????????ES6 之前 JavaScript 采用的是函数作用域+词法作用域,ES6 js 采用的是块级作用域+词 法作用域?

预解析

????????JavaScript 代码的执行是由浏览器中的 JavaScript 解析器来执行的。JavaScript 解析器执 行 JavaScript 代码的时候,分为两个过程:预解析过程和代码执行过程

预解析过程:

????????1.把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值

????????2.把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用

????????3.先提升 var,在提升 function

JavaScript的执行过程:

// 案例 1
var a = 25;
function abc() {
alert(a);
var a = 10;
}
abc(); // 案例 2
console.log(a);
function a() { console.log('aaaaa');
}var a = 1;
console.log(a);

变量提升

????????变量提升:定义变量的时候,变量的声明会被提升到作用域的最上面,变量的赋值不会提升

????????函数提升:JavaScript 解析器首先会把当前作用域的函数声明提前到整个作用域的最前面

/ 1、-----------------------------------
var num = 10;
fun();
function fun() { console.log(num);
var num = 20;
}
//2、-----------------------------------
var a = 18;
f1();
function f1() { var b = 9;
console.log(a);
console.log(b);
var a='123';
// 3、-----------------------------------
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() { var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}

????????变量声明提升: 使用 var 关键字定义的变量,被称为变量声明; 函数声明提升的特点是,在函数声明的前面,可以调用这个函数

写在最后

? ? ? ? 啊今天的任务也圆满完成啦,明天见呀~你不准备给我一个赞咩?不准备收藏咩?不准备评论个深度好文神马的咩?蟹蟹蟹蟹~

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:19:49  更:2021-08-10 13:20:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:18:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码