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学习——prototype原型和作用域(3) -> 正文阅读

[JavaScript知识库]JavaScript学习——prototype原型和作用域(3)

????????好记性不如烂笔头,在写作的过程中自己消化吸收,所以写下这个JavaScript学习系列文章。文章中的文字都是自己一一敲字敲下来的,都是自己理解的内容,各位酌情观看。

? ? ? ? 上一讲原型说完,说说作用域吧。看了大佬的两篇文章【JavaScript深入之词法作用域和动态作用域】【JavaScript深入之作用域链】,看过也没收获下什么,xmind读书笔记就记下了个文章名称和链接,也是醉了。重读!

【概念】

? ? ? ? 定义:?作用域是指程序源代码中定义变量的区域。——字面理解;

? ? ? ? ? ? ? ? ? ? ?作用域是根据名称查找变量的一套规则。——功能理解

【作用】

????????作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。

????????作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

?【扩展】

? ? ? ? JavaScript的作用域:全局作用域、函数作用域、块作用域(ES6+)。全局作用域和函数作用域都比较熟悉,块作用域是什么?

? ? ? ? 块作用域是ES6新增规范,由{}包括,if(){... for(){... try{ catch{... with(){... 等都是块作用域。使用let声明的变量只能在块级作用域里访问,具有“暂时性死区”特性

——我理解都一样,块作用域字面意思理解就是一个块,JavaScript中用大括号{}的方式来确定块,函数也是用{}括起来的,也是一个块作用域。

? ? ? ? 重要的“公式”:函数作用域的含义是指,属于这个函数的全部变量都可以在整个函数的范围内使用及复 用(事实上在嵌套的作用域中也可以使用)。

例子

var scope = "global scope";
function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f();
}
checkscope();

? ? ? ? 由于作用域机制,两个scope的定义不会引发冲突。记住下面的一句话再看代码都不会回答错:函数的作用域在函数定义的时候就确定了。

? ? ? ? 这里函数f定义在函数checkscope的内部,在函数checkscope内部的所有地方都能访问到函数checkscope的变量,所以函数f能访问到内部定义的scope。所以输出是“local scope”。

——如果对this 闭包一知半解,会影响这个问题的解答(不要问我怎么知道的...)。


? ? ? ? 为了让自己写的东西更有效(接近真理),我又去读了一下书《你不知道的JavaScript》,获取到的关键知识记录如下:

——看书要带着问题去看,比如我想看懂作用域这块内容,我就专门找很多JavaScript的书去啃相关章节,这样理解也透彻。直接拿着书从头看特别容易犯困,五分钟就着了(不要问我怎么知道的...)

第一部分第1章 作用域

1. JavaScript是门编译语言,在运行前几微秒编译。

?2. 编译过程:以var a =2;为例,编译器会进行如下处理。查找当前作用域(*)下是否有a,有则跳过这条语句继续编译;否则在当前作用域创建名称为a的新变量;=>然后编译出js引擎所运行时需要的代码;=>js引擎处理代码,查找当前域下是否有变量a,有则赋值2,没有则继续查找(在原型链查找)。最终找不到就抛出错误。

注:* ——作用域在编译的时候就已经确定了

第一部分第2章 词法作用域

1.词法作用域就是定义在词法阶段的作用域。换句话说,词法作用域是由你在写 代码时将变量和块作用域写在哪里来决定的

2.无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由函数被声明时所处 的位置决定。

3.词法作用域查找只会查找一级标识符,比如 a、b 和 c。如果代码中引用了 foo.bar.baz, 词法作用域查找只会试图查找 foo 标识符,找到这个变量后,对象属性访问规则会分别接管对 bar 和 baz 属性的访问。

注:*——

第一部分第3章 函数作用域和块作用域

1.函数作用域的含义是指,属于这个函数的全部变量都可以在整个函数的范围内使用及复用(事实上在嵌套的作用域中也可以使用)。

2.区分函数声明和表达式最简单的方法是看 function 关键字出现在声明中的位置(不仅仅是一行代码,而是整个声明中的位置)。如果 function 是声明中 的第一个词,那么就是一个函数声明,否则就是一个函数表达式。

ES6 中引入了 let 关键字(var 关键字的表亲),用来在任意代码块中声明变量。if (..) { let a = 2; } 会声明一个劫持了 if 的 { .. } 块的变量,并且将变量添加到这个块中。

注:*——let会声明一个劫持...的变量,还不太理解这句话。。。

以上细节也很重要,摘下来背诵。下篇讲作用域链

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:28:21  更:2021-10-30 12:30:18 
 
开发: 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年5日历 -2024/5/12 19:52:56-

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