web学习笔记(十九)

这篇具有很好参考价值的文章主要介绍了web学习笔记(十九)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.作用域

1.1作用域的概念

1.2作用域的分类

1.2.1全局作用域

1.2.2局部作用域

1.2.3块级作用域(ES6新增  )

2.变量作用域

2.1全局变量

2.2局部变量

3.作用域链 

3.1作用域链的定义

4.垃圾回收机制

4.1定义

4.2如何避免内存泄漏

5.预解析


1.作用域

1.1作用域的概念

我们平时声明的变量的名字,并不是在所有地方都有效,限定这个名字的可用范围,就是这个名字所在的作用域。作用域的使用可以提高程序逻辑的局部性,增强了程序的可靠性,同时可以减少命名冲突的问题。

1.2作用域的分类

作用域分为全局作用域、局部作用域和块级作用域(es6新增)三种。

1.2.1全局作用域

在全局范围(script标签内部,或者独立的js文件)内都生效(函数内和外都可以访问到)。

1.2.2局部作用域

也叫函数作用域,只有函数内才能访问到

1.2.3块级作用域(ES6新增  )

  •  { }表示一个块级作用域,一个循环或者一个条件语句都是一个块级作用域。
  • ES6才有块级作用域,之前都是没有的。
  • 在其他编程语言中(如java、c#等),或在es6中,let声明的变量只在它所在的代码块有效,所以在外部是访问不到的。

2.变量作用域

2.1全局变量

  1. 在全局作用域下声明的变量叫全局变量(在函数外部定义的变量)
  2.  函数内外都能使用
  3. 声明周期比较长,只有页面关闭才销毁
  4. 如果函数内,没有声明变量,直接使用,也可能会将这个变量升级为全局变量 eg:  a=10;
  5. es5中循环和条件语句后面跟的花括号里面定义的变量都是全局变量

2.2局部变量

  1. 在函数内声明的变量或者函数的形参,都是局部变量。
  2. 局部变量只能在函数内使用。
  3. 生命周期短,函数一旦被调用,变量就销毁,及时释放内存。
  4. 函数形参部分,也是局部变量。
  5. 如果在函数内部用var声明一个变量,那么这个变量也是局部变量。
  6. 局部变量只在函数内部进行使用。

3.作用域链 

3.1作用域链的定义

       作用域链就是变量可用范围的一种查找机制,函数套函数,每个函数都有自己的作用域,首先先从当前作用域中查找,如果查不到,则向上层作用域查找,直到找到全局,找到了就可以使用,找不到就报错,这种链式查找关系,就叫作用域链(其实就是一层一层向上查找作用域,看看能不能找到所用变量的定义信息,要是都找不到,那就得报错)。

比较官方的解释:根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称为作用域链。

function f1() {
      var num = 123;
      function f2() {
          var num = 0;
           console.log(num); // 站在目标出发,一层一层的往外查找
            }
         f2();
        }
 var num = 456;
  f1();

web学习笔记(十九),笔记,学习,笔记,javascript,前端,开发语言

4.垃圾回收机制

4.1定义

       当已经不需要某块内存时,但这块内存还未能释放出来这就叫内存泄漏,而垃圾回收机制就是为了防止内存泄漏,所以不定时的寻找到不再使用的变量,并将这些内存释放出来。

4.2如何避免内存泄漏

  1. 尽量减少使用全局变量,多使用局部变量。
  2. 在代码中多使用函数封装。
  3. 移除被遗忘的定时器或回调函数
  4. 及时释放闭包中的变量。
  5. DOM的引用时 不再使用的DOM要及时清除。
  6. 数组和对象在使用完时要置空。

5.预解析

JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码的 时候分为两步:预解析和代码执行。文章来源地址https://www.toymoban.com/news/detail-834558.html

  • 预解析: "var function”声明的两个变量在内存中 进行提前声明或者定义(其实就是变量或函数提升)。
  • 代码执行:从上到下执行JS语句。
            // 源程序
            var a = 18;
            f1();
    
            function f1() {
                var b = 9;
                console.log(a);
                console.log(b);
                var a = '123';
            }
    
            // ----------------
            // 按照预处理解析过的程序
    
            var a;//函数和var声明都要提前
            function f1() {
                // 函数内部的声明也要提前
                var a;
                var b;
                b = 9;
                console.log(a); //undefined
                console.log(b); //9         
                a = '123';
            }
            a = 18;
            f1();
       // 源程序
            f1();
            console.log(c);
            console.log(b);
            console.log(a);
    
            function f1() {
                var a = b = c = 9;
                //var a;
                // a = b = c = 9;
                // 相当于 var  a  = 9; b = 9; c = 9; b 和 c 直接赋值 没有var 声明 当 全局变量看
                // 集体声明  var a = 9, b = 9, c = 9;
                console.log(a);
                console.log(b);
                console.log(c);
            }
            // ----------------
            // 按照预处理解析过的程序
            function f1() {
                var a;
               a= b = c = 9;
                
                console.log(a);//9
                console.log(b);//9
                console.log(c);//9
            }
            f1();
            console.log(c);//9
            console.log(b);//9
            console.log(a);//报错

到了这里,关于web学习笔记(十九)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年web前端开发之JavaScript进阶(一)

    接上篇博客进行学习,通俗易懂,详细 博客地址: 2023年web前端开发之JavaScript基础(五)基础完结_努力的小周同学的博客-CSDN博客 学习 作用域 、变量提升、 闭包 等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法, 降低代码的冗余度 。 理解作用域对程序

    2024年02月03日
    浏览(36)
  • 【前端学习笔记2】javaScript基础

    是一种运行在客户端(服务器的编程语言) javacript分为行内JavaScript,内部JavaScript,外部JavaScript 内部JavaScript 直接写在html中body里面 alert(“hello,world”) 我们将script放在html文件的地步附近的原因是浏览器会按照代码在文件中的顺序加载html 如果先加载的JavaScript期望修改其

    2024年01月22日
    浏览(29)
  • JavaScript-Web学习笔记01

    1、Web API Web API 是浏览器 提供的一套操作 浏览器功能 和 页面元素 的 API (BOM 和 DOM)。 2、总结 API 是为我们提供的一个接口,帮助我们实现某种功能 Web API 主要是针对浏览器提供的接口,主要针对浏览器做交互效果。 Web API 一般都有输入和输出(函数的传参和返回值),

    2024年04月09日
    浏览(60)
  • 前端学习心得笔记之三(JavaScript篇)

    JavaScript一种运行在客户端(浏览器)上的解释性弱语言,是前端的重中之重,在计算机刚刚兴起的那个时代,这个由十天仓促编成的语言发展到现在也是令人吹嘘。 文件引用 在一个单独的js文件中也可以编写JavaScript代码,然后在HTML文件使用script标签进行引用以下为演示 m

    2024年04月23日
    浏览(35)
  • 前端学习笔记:JavaScript基础语法(ECMAScript)

    此博客参考b站:【黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程】https://www.bilibili.com/video/BV1Y84y1L7Nn?p=76vd_source=06e5549bf018e111f4275c259292d0da 这份笔记适用于已经学过一门编程语言(最好是C语言)的同学,如果你没有

    2024年02月16日
    浏览(30)
  • 建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

    建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— 网络协议 建站系列(四)— Web服务器之Apache、Nginx 建站系列(五)— 前端开发语言之HTML、CSS、JavaScript 建站系列(六)— 后端开发语言 建站系列(七)— 常用前后端框架

    2024年02月09日
    浏览(39)
  • [HTML]Web前端开发技术26(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 数据类型 数据类型-字符型 数据类型-数值型 数据类型-布尔型 数据类型-其它类型 变量 转义字符 运算

    2024年02月20日
    浏览(51)
  • python_web1(前端开发之HTML、CSS、Bootstap、Javascript、JQuery)

    知识总结: Python_web前端开发 python 安装Flask web框架 pip install flask 简介:templates用来返回html的页面,而非文本。 创建文件index.html 结构如下 index.xml内容如下: web1.py内容如下: 重新运行后: 固定格式:h/div/span/a/img/ul/li/table/input/form 通用的字符编码 meta charset=“UTF-8” div:一个

    2024年04月14日
    浏览(44)
  • 【JavaEE初阶】前端第四节.JavaScript入门学习笔记

    作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java测试开发 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 一、前置知识  1、JS 和 HTML 和 CSS 之间的关系 1.2 JS 的书写形式 1.2.1 内嵌式 1.2.2 行内式  1.2.3 外部式 1.2.4 扩展 1.2

    2024年02月08日
    浏览(38)
  • Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript

    家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包