5_js数组常用函数与let与const关键字

  • var 语句 用于声明一个函数范围或全局范围的变量。

1.1 const修饰
  • const:常量的值是无法改变的,也不能被重新声明。

    • PI:3.1415926....

    • 因为变量你修改值,就是等于把引用地址也修改了。

//申明不可变的值
const number = 42;
number = 99;
console.log(number); //TypeError: Assignment to constant variable. 
不能复制给const修饰的变量
  • 课堂案例:1.const修饰变量(不可变的值).html

  • const也可以修饰对象和数组

const MY_OBJECT = {'key': 'value'};
​
// 重写对象和上面一样会失败
// Uncaught TypeError: Assignment to constant variable.
MY_OBJECT = {'OTHER_KEY': 'value'};
​
// 对象属性并不在保护的范围内
// 下面这个声明会成功执行
MY_OBJECT.key = 'otherValue'; // Use Object.freeze() to make object immutable
​
// 也可以用来定义数组
const MY_ARRAY = [];
// 可以向数组填充数据
MY_ARRAY.push('A'); // ["A"]
// 但是,将一个新数组赋给变量会引发错误
// Uncaught TypeError: Assignment to constant variable.
MY_ARRAY = ['B'];
  • 课堂案例:2.const修饰对象.html

  • 课堂案例:3.const修饰数组.html

1.2 let修饰
  • let 语句声明一个块级作用域的局部变量。

  • let 允许你声明一个作用域被限制在块作用域中的变量、语句或者表达式。与 var 关键字不同的是,var 声明的变量作用域是全局或者整个函数块的。 varlet 的另一个重要区别,let 声明的变量不会在作用域中被提升,它是在编译时才初始化。

var x1 = 1;
if (x1 === 1) {var x1 = 2;console.log(x1);// expected output: 2
}
//引用了全局的
console.log(x1);
​
// expected output: 1
let x2 = 1;
​
if (x2 === 1) {let x2 = 2;console.log(x2);// expected output: 2
}
//作用域划分非常明显
console.log(x2);
// expected output: 1
  • 课堂案例:4.let申明变量.html

  • 作用域规则

    • let 声明的变量作用域只在其声明的块或子块内部,这一点,与 var 相似。二者之间最主要的区别在于 var 声明的变量的作用域是整个封闭函数。

function varTest() {var x = 1;{var x = 2; // same variable!console.log(x); // 2}console.log(x); // 2
}
​
function letTest() {let x = 1;{let x = 2; // different variableconsole.log(x); // 2}console.log(x); // 1
}
  • 课堂案例:5.let作用域规则.html

  • 重复声明

    • 在同一个函数或块作用域中重复声明同一个变量会抛出 SyntaxError

//错误情况1
if (x) {let foo;let foo; // SyntaxError thrown.
}
​
//错误情况2
let x = 1;
switch(x) {case 0:let foo;break;case 1:let foo; // SyntaxError for redeclaration.break;
}
​
//正确情况:然而,需要特别指出的是,一个嵌套在 case 子句中的块会创建一个
//新的块作用域的词法环境,就不会产生上诉重复声明的错误。
let x = 1;
​
switch(x) {case 0: {let foo;break;}case 1: {let foo;break;}
}
  • 其它情况:

    • 用在块级作用域中,let 将变量的作用域限制在块内,而 var 声明的变量的作用域是在函数内。

var a = 1;
var b = 2;
​
if (a === 1) {var a = 11; // the scope is globallet b = 22; // the scope is inside the if-block
​console.log(a);  // 11console.log(b);  // 22
}
​
console.log(a); // 11
console.log(b); // 2
  • 课堂案例:6.let的重复申明与其它情况.html

2 数组常用函数的应用

2.1 数组排序
  • 课堂案例:7.数组反转和排序的函数.html

2.2 数组常用方法解析
  • 课堂案例:8.数组常用方法1.html

    • at() 根据索引返回对应的值

      • 参数为负数:从后往前检索

      • 匹配给定索引的数组中的元素。如果找不到指定的索引,则返回 undefined。

    • indexOf() 返回指定值(第一次出现)对应的索引

      • 参数为负数:也是从指定的位置开始往后找

      • 如果不存在,则返回 -1

    • lastIndexOf() 返回元素最后一次出现的索引,从数组的后面向前查找(从右边向左边找)

      • 如果不存在则返回 -1

      • 参数为正数的时候也是从右边向左边找。

  • 课堂案例:9.数组常用方法2.html

    • values() 将数组转换为迭代器进行遍历,可以使用增强For循环。

  • 课堂案例:10.数组常用方法3.html

    • concat() 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

    • copyWithin() 复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。

      • console.log(array1.copyWithin(0, 3, 4)); 包含了索引3的值而不包含索引4的值,给替换到索引0的位置。

    • entries() 方法返回一个新的 Array Iterator 对象,该对象包含数组中每个索引的键/值对。

  • 课堂案例:11.数组常用方法之every.html

  • 课堂案例:12.数组常用方法之filter.html

  • every() 接受的参数是一个函数,它返回一个布尔值。

    • array1.every(isThreshold) //将左边数组中的每个值,都调用isThreshold进行计算

  • filter() 过滤数组的元素,该方法的返回值是true和false,最终将为true的结果进行返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 linux 服务器上安装Redis数据库

先打开我们的Linux服务器 终端执行 安装redis sudo yum install redis然后 他会提示你要占多少磁盘空间 例如 我这里是 1.7 M 没问题就 y 然后回车就可以了 然后 我们这里执行 redis-cli --version这样 就能看到版本了 然后 我们可以根据版本选择启动命令 使用systemctl命…

SpringMVC:整合 SSM 上篇

文章目录 SpringMVC - 03整合 SSM 上篇一、准备工作二、MyBatis 层1. dao 层2. service 层 三、Spring 层四、SpringMVC 层五、执行六、说明 SpringMVC - 03 整合 SSM 上篇 用到的环境: IDEA 2019(JDK 1.8)MySQL 8.0.31Tomcat 8.5.85Maven…

期末加油站-图像处理期末知识点汇总

第三章:图像增强 一、概念 1.图像增强是通过某种技术有选择地突出对某一具体应用有用的信息,削弱或抑制一些无用的信息。 2. 图像增强处理不是无损处理,不能增加原图像的信息。 3. 图像增强按所处理的对象不同可分为: 灰度图像增…

用C的递归函数求n!-----(C每日一编程)

用递归函数求n! 有了上面这个递归公式就能写C代码了。 参考代码: int fac(int n) {if (n 1 || n 0)return 1;else return n * fac(n - 1); } void main() {int n;scanf("%d",&n);int f fac(n);printf("\n%d!%d\n", n, f); …

Druid源码阅读-DruidStatInterceptor实现

上次我们在druid-spring-boot-starter里面看到有一个DruidSpringAopConfiguration的配置类,然后引入了DruidStatInterceptor这样一个切面逻辑。今天我们就来看一下这个类的实现。 DruidStatInterceptor 这个类的包路径下入com.alibaba.druid.support.spring.stat。…

常见激活函数

激活函数是神经网络中的一种非线性变换,它在神经元的输出上引入了非线性性质,使神经网络能够更好地学习和适应复杂的数据模式。以下是一些常见的激活函数: Sigmoid 函数 Sigmoid 函数将输入映射到(0,1)之间…

第4章 | 安徽某高校《统计建模与R软件》期末复习

第4章 参数估计 参数估计是统计建模的关键步骤之一,它涉及根据样本数据推断总体参数的过程。在统计学中,参数通常用于描述总体的特征,如均值、方差等。通过参数估计,我们可以利用样本信息对这些未知参数进行推断,从而…

SpringBoot 整合 JPA:实战指南

大家好,我是升仔 背景介绍 JPA 作为 Java EE 的标准,提供了一种将 Java 对象映射到数据库表的方法。在 SpringBoot 中整合 JPA 不仅可以提升开发效率,还能使数据操作更加安全和方便。 准备工作 确保你的开发环境已经安装了 JDK、Maven、S…

Qt中实现短信验证码功能

在Qt中实现短信验证码功能,可以使用Qt的信号槽机制和计时器来实现。 首先,在mainwindow.h头文件中添加下列代码: #include <QMainWindow> #include <QTimer>namespace Ui {class MainWindow; }class MainWindow : public

JoySSL诚招SSL证书代理

不久前&#xff0c;阿里云宣布了一个让人稍感唏嘘的消息——它们的一年期免费SSL证书服务将停步&#xff0c;转而提供三个月期限的证书。这一变化&#xff0c;无疑会使得网站开发的公司在维持用户信任和网站安全上多出心思。然而&#xff0c;免费的午餐并没有彻底消失&#xff…

有关List的线程安全、高效读取:不变模式下的CopyOnWriteArrayList类、数据共享通道:BlockingQueue

有关List的线程安全 队列、链表之类的数据结构也是极常用的&#xff0c;几乎所有的应用程序都会与之相关。在java中&#xff0c; ArrayList和Vector都使用数组作为其内部实现。两者最大的不同在与Vector是线程安全的。 而ArrayList不是。此外LinkedList使用链表的数据结构实现…

Java多线程技术四——定时器

1 定时器的使用 在JDK库中Timer类主要负责计划任务的功能&#xff0c;也就是在指定的时间开始执行某一个任务&#xff0c;Timer类的方法列表如下&#xff1a; Timer类的主要作用就是设置计划任务&#xff0c;封装任务的类却是TimerTask&#xff0c;该类的结构如下图 因为TimerT…

Flink 数据序列化

为 Flink 量身定制的序列化框架 大家都知道现在大数据生态非常火&#xff0c;大多数技术组件都是运行在JVM上的&#xff0c;Flink也是运行在JVM上&#xff0c;基于JVM的数据分析引擎都需要将大量的数据存储在内存中&#xff0c;这就不得不面临JVM的一些问题&#xff0c;比如Ja…

【小白攻略】php 小数转为百分比,保留两位小数的函数

php 小数转为百分比 首先&#xff0c;最简单直观的方法是利用PHP内置的number_format函数。该函数可以对一个数字进行格式化&#xff0c;并可以设置小数点后的精度。通过将小数乘以100&#xff0c;再用number_format函数将结果格式化为百分比形式&#xff0c;即可达到将小数转为…

【线性代数】决定张成空间的最少向量线性无关吗?

答1&#xff1a; 是的&#xff0c;张成空间的最少向量是线性无关的。 在数学中&#xff0c;张成空间&#xff08;span space&#xff09;是一个向量空间&#xff0c;它由一组向量通过线性组合&#xff08;即每个向量乘以一个标量&#xff09;生成。如果这组向量是线性无关的&…

HackTheBox - Medium - Linux - Format

Format Format 是一种中等难度的 Linux 机器&#xff0c;它突出显示了由解决方案的结构方式引起的安全问题。立足点涉及PHP源代码审查&#xff0c;发现和利用本地文件读/写漏洞&#xff0c;并利用Nginx中的错误配置在Redis Unix套接字上执行命令。横向移动包括浏览 Redis 数据…

旅游品牌网站搭建的作用是什么

我国旅游业规模非常高&#xff0c;各地大小旅游景区也是非常多&#xff0c;尤其节假日更是可以达到峰值&#xff0c;无论周边游还是外地游对所要去的景区&#xff0c;消费者总是需要来回了解很多&#xff0c;浏览器查或旅行社咨询等。 对旅游企业而言&#xff0c;传统线下方式…

Linux6.1、IO基础(C库函数文件类接口)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 1、文件打开及关闭 我们先了解文件的打开&#xff0c;path是文件路径&#xff0c;mode是打开文件的模式 r模式是只读&#xff0c;流位于文件的开头&#xff0c;也就是说从文件内容的开头开始读。r模式是读和写&#xff0c;同…

研究论文 2022-Oncoimmunology:AI+癌RNA-seq数据 识别细胞景观

Wang, Xin, et al. "Deep learning using bulk RNA-seq data expands cell landscape identification in tumor microenvironment." Oncoimmunology 11.1 (2022): 2043662. https://www.tandfonline.com/doi/full/10.1080/2162402X.2022.2043662 被引次数&#xff1…

VSCode软件与SCL编程

原创 NingChao NCLib 博途工控人平时在哪里技术交流博途工控人社群 VSCode简称VSC&#xff0c;是Visual studio code的缩写&#xff0c;是由微软开发的跨平台的轻量级编辑器&#xff0c;支持几乎所有主流的开发语言的语法高亮、代码智能补全、插件扩展、代码对比等&#xff0c…