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. 中…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
