Day06-JS高级编程
Day01-JS高级编程
一 变量和常量
1 概念
在程序中,变量是值可以改变的量,常量是值不可以改变的量
在ES6以前变量的创建使用var关键字 (可以创建多个同名变量)
从ES6开始变量的创建推荐使用let关键字 (不可以创建多个同名变量)
从ES6开始常量的创建使用const关键 (不可以创建多个同名常量)
2 全局变量
全局变量是创建在函数外面的变量,在整个页面都可以使用
let n = 10
function fun(){console.log("函数内部",n)
}
fun()
console.log("函数外部",n)
3 局部变量
函数作用域变量,块级作用域变量都属于局部变量
function fun(){let m = 10
}for(let i=0;i<20;i++){}
4 var、let定义变量区别
场景一
let创建的变量有严格的作用域
{let m =10 console.log("啊,变量m=",m)
}
console.log("啊,再次输出变量m",m)
var创建的变量页有作用域,它的作用域是整个页面
{var m =10 console.log("啊,变量m=",m)
}
console.log("啊,再次输出变量m",m)
场景二:
变量提升:我们使用var,let创建的全局变量,在浏览器上运行的时候,会把全局变量的声明提升到程序的顶部,当程序运行到我们写的代码位置,再进行赋值;但是let创建的变量有严格的作用域,只能在我们写代码的位置之后才能使用
<script>console.log(a);var a = 10console.log(a);// console.log(b);let b = 20console.log(b);</script>
二 作用域链
当我们在局部作用域中使用一个变量时,程序会优先在局部作用域找这个变量,如果找不到,程序会往上一级作用域查找,只到全局作用域为止,如果还找不到,则报错,这个过程成为作用域链
let a = 15function fun(){let a = 10console.log(a);}fun()console.log(a);
面试题: let const var 有什么区别? 什么是变量提升? 怎么避免(解决)变量提升?
区别const用来声明常量,在声明的时候必须赋值,而且值不能改变let var用来声明变量const 和let在同一作用域下,名称不能重复.var在同一作用域下变量名可以重复var 只有全局作用域和函数作用域,没有块级作用域let const 有全局作用域,函数作用域,块级作用域
什么是变量提升变量会被提升到程序的顶部(全局作用域变量,会被提升到程序的最顶部;函数作用域变量会被提升到函数的顶部)
怎么避免变量提升使用let代码var创建变量
三 变量和函数的提升
变量提升
当JS程序放在浏览器中解析的时候,浏览器会找到所有的全局变量,并放在程序的最顶部,值默认为undefined
函数提升
//函数的调用fun()/*** 函数的声明*/function fun(){console.log("-----------");}
浏览器在运行js程序时,会把函数的声明提升到程序的顶部
console.log(fun);/*** 函数的声明*/function fun(){console.log("-----------");}//使用var声明一个变量var fun = 100
面试题:
变量和函数名字一样的,提升优先级怎样的。
变量和函数名字一样的,函数提升优先级高
四 递归
函数自己调用自己就叫递归,递归相当于循环,有很多for循环解决不了的问题,可以用递归来解决
案例1-求和
使用递归求1-5的和
function sum(n){if(n == 1){return 1}else{return n + sum(n-1)}}let result = sum(5)console.log(result);
案例2-求n的阶乘
function sum(n){if(n == 1){return 1}else{return n * sum(n-1)}}
五 立即执行函数IIFE
为什么要学立即执行函数?
在实际的项目开发中,一个html大概率会引入多个js文件
多个js文件中大概率会有同名的全局变量
我们可以使用立即执行函数来解决这个问题
什么是立即执行函数
立即执行函数本质上就是一个匿名函数,它会在页面打开的时候立即执行 ,立即执行函数,也可以称为IIFE
基本用法
(function(){let a = 20console.log(a);
})()
立即执行函数参数传递
(function(e){console.log("e=",e);
})(123)
书写规范,在前面加;
;(function(e){console.log("e=",e);
})(123)
立即执行函数前面的代码必须要以
;结尾,但是程序员的习惯不一样,很多程序员不在代码的末尾写;
相关文章:
Day06-JS高级编程
Day01-JS高级编程 一 变量和常量 1 概念 在程序中,变量是值可以改变的量,常量是值不可以改变的量 在ES6以前变量的创建使用var关键字 (可以创建多个同名变量) 从ES6开始变量的创建推荐使用let关键字 (不可以创建多个同名变量) 从ES6开始常量的创建使用const关键 (不可以创建…...
针对高可靠性和高性能优化的1200V硅碳化物沟道MOSFET
目录 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…...
开发框架软件公司:与之携手,共同开启办公流程化之路!
在快节奏的社会里,如何提高企业的办公效率?如何让各部门之间的协作关系更为顺畅?如何把企业内部的数据真正利用起来,成为高层做出经营决策的重要依据?其实,要做到这些,与开发框架软件公司联手合…...
openCV C++环境配置
文章目录 一、openCV 安装二、新建项目三、配置环境变量四、测试使用 编译器:vs2017 OpenCV:4.5.4 一、openCV 安装 将openCV安装到一个路径下,我安装到了D盘根目录下 二、新建项目 在vs2017新建控制台空项目,打开项目属性 在VC目录 -> 包含目录下…...
8.3 作业 c高级
1.递归实现,输入一个数,输出这个数的每一位: #include<myhead.h>void print_digit(int num) {if(num<10){printf("%d",num);puts("");}else{print_digit(num/10); //递归打印除最后一位外的数printf("%…...
django实现部门表的增删改查界面
1、前期准备 部署好mysql数据库,创建好unicom数据库下载好bootstap的插件下载好jquery的插件下载好mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl的安装包,根据python的版本下载 2、创建项目 在pycharm中创建项目 在pycharm的终端创建虚拟环境 py -m v…...
Tomcat的介绍和安装配置、eclipse中动态web项目的创建和运行、使用IDEA创建web项目并运行
一、Tomcat的介绍和安装配置 安装tomcat: 环境变量的配置: 配置之后重启cmd,执行startup命令,启动tomcat 在localhost:8080,能进入tomcat主界面,说明配置成功 二、eclipse中动态web项目的创建和运行 tomca…...
idea操作——已经push到远程的代码回滚(不保留本地更改)
1. git: 2. 找到相应分支--->找到要回滚的代码的位置----->右键,然后选择如图的选项: 3.下图的选项选择hard,然后选择reset 4.操作完成后等一会,待同步结束后push代码到远程,选择force push.…...
无涯教程-Lua - 垃圾回收
Lua使用自动内存管理,该管理使用基于Lua内置的某些算法的垃圾回收。 垃圾收集器暂停 垃圾收集器暂停用于控制垃圾收集器之前需要等待多长时间; Lua的自动内存管理再次调用它。值小于100意味着Lua将不等待下一个周期。同样,此值的较高值将导…...
DP(各种模型)
数字三角形模型 摘花生 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就…...
开学在即,这个超好用的中小学新生录取查询系统制作方法值得借鉴
即将开学,中小学负责招生的老师面临着新学年的招生工作。这是一项紧迫且重要的任务,需要老师们迅速而有效地应对。在新生录取过程中,有几个关键任务需要尽快完成。 首先,老师们需要录入新生的成绩信息。这包括学生的考试成绩、综…...
使用Canvas裁剪图片
使用Canvas裁剪图片 概述 在Web开发中,我们经常需要对图片进行裁剪,以满足不同尺寸需求或者实现图片的局部展示。本篇博客将带您深入了解如何使用Canvas技术来实现图片的裁剪功能。我们将通过一个实例来演示如何利用Canvas绘制图片,并通过蒙…...
JavaScript |(三)内建对象 | 数组 | string对象 | 尚硅谷JavaScript基础实战
学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 📚数组🐇数组介绍⭐️数组(Array)⭐️基本操作⭐️数组的字面量 🐇数组中的常用方法⭐️push()⭐️pop()⭐️unshift()⭐️shif…...
势能线段树
目录 简单介绍 题目 1. 上帝造题的七分钟 2 2.SUM and REPLACE 3. And RMQ 总结 简单介绍 题目 1. 上帝造题的七分钟 2 链接:https://www.luogu.com.cn/problem/P4145 维护两种操作 1.区间开根号(下取整) 2.区间和询问 显然无法通过懒标记来计算区间开根号…...
【phaser微信抖音小游戏开发004】往画布上增加文本以及文本的操作
我们在states中创建st004.js的类,或者将states中的index.js直接重命名为st004.js,把里面的类名也修改为st004.如下图 在main.js中,引入st004,并设置启用的state为st004。如下图 接下来到states/st004里面,在create里面将文本修改一…...
【1.4】Java微服务:服务注册和调用(Eureka和Ribbon实现)
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…...
QT中使用ffmpeg的api进行视频的播放
在了解ffmpeg使用api进行视频的播放之前,我们首先了解一下视频的播放流程。 一、视频的播放流程 首先是我们最常见的视频文件,在播放流程中首先是要打开视频文件,将视频文件中的数据进行解封装,之后再将解封装之后的视频进行解码…...
使用idea实现git操作大全(在项目开发中遇到的实际情况
使用idea实现git操作大全(在项目开发中遇到的实际情况) 1.安装git插件2.在开发中切记拉一个自己的分支 1.安装git插件 2.在开发中切记拉一个自己的分支 选中需要拉的分支,右键该分支,选中new breach from “分支”,点…...
SQL面试题:一个优化案例
问题描述 假如存在以下两个表: CREATE TABLE customer ( C_CUSTKEY int NOT NULL, C_NAME varchar(25) NOT NULL, C_ADDRESS varchar(40) NOT NULL, C_NATIONKEY int NOT NULL, C_PHONE char(15) NOT NULL, C_ACCTBAL decimal(15,2) NOT NULL, C_MKTSEGMENT char(…...
链表的总体涵盖以及无哨兵位单链表实现——【数据结构】
😊W…Y:个人主页 在学习之前看一下美丽的夕阳,也是很不错的。 如果觉得博主的美景不错,博客也不错的话,关注一下博主吧💕 在上一期中,我们说完了顺序表,并且提出顺序表中的问题 1. 中…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
简单聊下阿里云DNS劫持事件
阿里云域名被DNS劫持事件 事件总结 根据ICANN规则,域名注册商(Verisign)认定aliyuncs.com域名下的部分网站被用于非法活动(如传播恶意软件);顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...
【Docker 02】Docker 安装
🌈 一、各版本的平台支持情况 ⭐ 1. Server 版本 Server 版本的 Docker 就只有个命令行,没有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …...
