Web 前端 Javascript笔记2

news2024/9/23 17:25:27

1、数组

为什么需要数组:因为变量只能存储一条数据,但是储存多条数据

 数组的声明方式

1、new

let a1=new Array()
console.log(a1)

2、字面量

 let a2=[1,2,4,"k",true,"zhangsan",11]
console.log(a2)

 数组里面可以存放不同的数据类型

数组长度 

console.log(a2.length)

查看数组元素:数组下标 

数组下标从0开始,没有-1下标,-1 下标只有python有

console.log(a2[2])

遍历数组 

for(let i=0;i<=a2.length;i++){
            console.log(a2[i])
        }

练习 

let a3=[2,3,4,5,6,1,22]求所有元素的和,求平均值

s=0 
av=0
let a3=[2,3,4,5,6,1,22]
for(let j=0;j<a3.length;j++){
    s=s+a3[j]
}
av=s/a3.length
console.log(av)
console.log(s)

2、循环加强:迭代数组对象

 for in:i是下标

 let a3=[11,3,4,27]
    for(let i in a3){
        console.log(a3[i])
    }

for of:i是数组里的值

let a3=[11,3,4,27]
for(let i of a3){
    console.log(i)
}

3、数组操作

查:数组名[下标]

改: 数组名[下标]=值

增:数组名.push()        //能够一次把一个或多个元素在添加至末尾

       数组名.unshift()        //能够一次把一个或多个元素在添加至开头

       数组名.splice(下标,删除元素的个数,增加的值)    //在指定的下标中增加值

    

删:数组名.pop()        //括号里面没有参数,删除最后一个元素

       数组名.shift()       //括号里面没有参数,删除第一个元素

       数组名.splice(start,删除多少个元素)

其他方法

数组名.includes() :用于确定数组中是否存在某个元素,含有则返回true,否则返回false

数组名.indexOf() :返回数组中可以找到给定值的第一个索引,如果不存在返回-1

数组名.lastindexOf() :返回数组中可以找到给定值的最后一个索引,如果不存在返回-1

数组名.sort():对数组的元素进行排序,并返回数组

数组名.reverse():颠倒数组中元素的位置

数组名.fill():用一个固定值填充数组中指定下标范围内的全部元素

数组名.concat(数组名2):返回一个合并两个或多个数组后的新数组


4、函数、

函数:一段实现某个功能的代码集合

本质:实现代码的高度复用

函数在js中的定义方式

function 函数名([参数]){函数体}

函数调用

函数名()

无参函数 

<script>
        //function 函数名([参数]){函数体}
        function just(){
            console.log("helllllo!")
        }
        just()
    </script>

 有参函数:

默认情况下你的形参有几个,传回去的实参就有几个,一对一的有顺序关系

  function get(n1,n2){
           console.log(n1+n2)
           return n1+n2,n2-n1,n1*n2//只能返回一个数据
       }
       let a=get(2,3)
       console.log(a)
     

函数的返回值:

 在函数体中通过 return 实现返回值

返回多个数据的时候,只能返回return的最后一个数据

想要返回多个数据就返回一个数组

函数表达式:

将声明的函数赋值给一个变量,通过变量完成函数的调用与参数的传递

  <script>
        let fn=function sum(a,b){
            return a+b;
        }
        console.log(fn(2,4))
    </script>

 运行结果为:6

匿名函数:

匿名函数指的是没有名称的函数,可以有效避免全局变量的污染及函数名的冲突,是函数表达式的另一种表现形式,可以通过函数声明的方式实现调用。

①、函数表达式中省略函数名

<script>
     let fn=function (a,b){
            return a+b;
        }
        console.log(fn(2,4))
</script>

②、自调方式

<script>
    ( function (a,b){
            console.log(a+b);
    })
        (2,4)
</script>

③、处理事件

<body> 
    <input type="button" value="btn" id="sub">
    <script>
    //获得按钮元素
    let sub = document.querySelector("#sub")

    //给按钮增加点击事件。
    sub.onclick=function(){

        alert("当点击按钮时会执行")

    }

</script>
</body>

④对象 

let a = {
    name:"kkk",
    age:18,
    fn:function(){
        return "我叫"+this.name+"今年"+this.age+"岁了!";
    }
};

console.log(a.fn());//我叫kkk今年18岁了!

回调函数: 

   <script>
    function t1(){
            console.log("test1------")
        }
    function t2(fn){
            fn()
            console.log("test2~~~~")
        }
t2(t1())
</script>

箭头函数 :

①、标准语法

(参数1,参数2.......)=>{

        函数体

}

②、返回值

(参数1,参数2.......)=>{

        return 返回值

}

或者

(参数1,参数2.......)=>返回值

③、含有一个参数

(参数)=>{

        函数体

}

或者

参数=>{函数体}

④、无参箭头函数

()=>{函数体}

或者,将空括号改成_

   _=>{函数体}


5、值传递与引用传递

①|值传递

k接到了a的数据

   <script>
       function c(a,b){
           console.log(a)
           console.log(b)
           a+=1
           b+=1
           return a,b
       }
       let k=c(1,2)
       console.log(k)
   </script> 

再来:

声明两个变量,传到函数里面修改,出函数之外再打印这两个变量,发现变量大小没有发生改变

 <script>
       function c(a,b){
           a+=1
           b+=1
       }
       let x=1
       let y=3
       c(x,y)
       console.log(x)
       console.log(y)
   </script> 

 ②、引用传递

将数组传到函数中修改,数组却真的被修改了


 <script>
       function c(a){
           a.push([1,4,10,25])
       }
       let a=[17]
       c(a)
       console.log(a)
   </script> 

这些代码会被加载到内存当中,代码执行的时候会立刻有个执行栈,变量的声明会放在常量池里,数组存的东西比较多,无法放在栈中,于是放在堆里,堆里的数据都有对应的16进制地址,当调用数组的时候,其实我们拿到的是数组的地址,将数组去赋值给一个变量,这个变量就可以访问数组地址,这个变量修改时,会带着地址修改数组的值。


6、函数作为参数传递

函数调用函数是正常的现象:回调函数

<script>   
    function t1(){
            console.log("test1------")
        }
        function t2(fn){
            fn()
            console.log("test2~~~~")
        }
    t2(t1())
</script>

 若是让 被调用的t1()函数作为参数,可以用匿名函数

</script>
    function test2(fn){
            fn()
            print("test2~~")
        }
        
        t2(function(){
            console.log("test1~~")
        })
</script>

觉得麻烦用箭头函数

   <script>
        function test2(fn){
            fn()
            print("test2~~")
        }

            //箭头函数 主要是作于作为其他函数的参数进行
            test2(()=>{
                console.log("test1~~")
            })
    </script>
 <script>
        function test2(fn){
            fn()
            print("test2~~")
        }

            //箭头函数 主要是作于作为其他函数的参数进行
            test2(x=>2)
    </script>

7、默认参数

<script>
    function Area(r,PI=3.14){
        return r*r*PI
    }
    let a=Area(3)
    console.log(a)//得出结果=28.26
</script>

8、可变参数(arguments)

 <script>
        function getsum(){//只放前两个
            console.log(arguments)
        }
        getsum(11,3,7,19,2)
 </script>

打印出来返回一个数组 


9、​​​​​​​ 剩余参数

如果函数的最后一个命名参数以...为前缀,则它将成为一个由剩余参数组成的真数组,其中从0(包括)到theArgs.length(排除)的元素由传递给函数的实际参数提供。

function(a, b, ...theArgs) {
  // ...
}

 剩余参数和 arguments对象之间的区别主要有三个:

  • 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
  • arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法。

10、作用域

  •  变量名(名称)在某一个范围内生效,那么这个范围就是他的作用域

        我的学号出了校门就没用了

  •         全局作用域 局部作用域 块级作用域:对应全局变量 局部作变量 块级变量

        1、全局作用域:在script标签下第一层

        2、局部作用域 :函数内

        3、块级作用域:一对花括号内:{}        var没有块级作用域这个概念


11、对象

JavaScript 对象是拥有属性和方法的数据

函数放在对象里叫做方法

变量放在对象里叫做属性

   <script>
        let name=[122,111,160]
        //对象:存储数据
        let zhangsan={
             uname:"zhanshan",
             age:21,
             sing: ()=>{
                 console.log("hahahahahah")
             }
        }//对象属性与方法
       
    </script>

//查看 :

对象名.属性 

对象名["属性或方法"]------->中括号里必须是字符串

 console.log(zhangsan["age"])
console.log(zhangsan.uname)

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

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

相关文章

html--烟花3

html <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Canvas烟花粒子</title> <meta name"keywords" content"canvas烟花"/> <meta name"description" content"can…

013_NaN_in_Matlab中的非数与调试方法

Matlab中的非数与调试方法 是什么&#xff1f; Matlab编程&#xff08;计算器使用&#xff09;中经常有个错误给你&#xff0c;这句话里可能包含一个关键词NaN。大部分学生都有过被 NaN 支配的痛苦记忆。 NaN 是 Not a Number 的缩写&#xff0c;表示不是一个数字。在 Matla…

00_STM32CubeMX如何新建一个工程

STM32CubeMX如何新建一个工程 STM32CubeMX如何新建一个工程以使用PA1口点亮LED为例子 STM32CubeMX如何新建一个工程 以使用PA1口点亮LED为例子 1.创建一个新工程 2.搜索芯片&#xff0c;然后双击 3.点击PA1引脚&#xff0c;设置为输出口 4.文件一定要保存到英文路径&#xff…

Normalizing Flows

需要学的是神经网络 f f f, 用于完成从source distribution (Pz)&#xff08;latent space&#xff0c;一般为高斯分布&#xff09;到 target distribution (Px) 的映射。 Normalizing Flows 是一种强大的生成模型&#xff0c;它通过学习一个可逆且易于计算的转换来将复杂的概…

Linux多进程开发2 - 进程间通信

1、进程间通信的概念 进程是一个独立的资源分配单元&#xff0c;不同进程之间的资源是独立的&#xff0c;没有关联&#xff0c;不能在一个进程中直接访问另一个进程的资源。但是&#xff0c;进程不是孤立的&#xff0c;不同的进程需要进行信息的交换和状态的传递等&…

【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

文章目录 1. 什么是大模型2. 检索增强生成 RAG一、什么是 RAG二、RAG 的工作流程 3. langChain介绍一、什么是 LangChain二、LangChain 的核心组件 4. 开发 LLM 应用的整体流程一、何为大模型开发二、大模型开发的一般流程三、搭建 LLM 项目的流程简析&#xff08;以知识库助手…

明日周刊-第6期

最近一周杭州的天气起起伏伏&#xff0c;下雨就凉&#xff0c;不下雨就热。但是夏天的感觉确实是越来越浓烈了&#xff0c;又是一年夏&#xff0c;在这个夏天大家都有什么新的计划呢。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、我国自主研发科技壮举震惊全球航天界…

SpringBoot删除菜品模块开发(SpringMVC分割参数、事务管理、异常处理、批量删除)

需求分析与设计 一&#xff1a;产品原型 在菜品列表页面&#xff0c;每个菜品后面对应的操作分别为修改、删除、停售&#xff0c;可通过删除功能完成对菜品及相关的数据进行删除。 删除菜品原型&#xff1a; 业务规则&#xff1a; 可以一次删除一个菜品&#xff0c;也可以批…

Zookeeper中的节点类型和实现持久化的两种方式

进入zookeeper的bin目录&#xff0c;执行./zkServer.sh start ../conf/zoo.cfg启动&#xff01; Zookeeper内部的数据模型 类似于数据结构中的树&#xff0c;同时也很像文件系统的目录&#xff0c; 节点的类型 持久节点&#xff1a;create /znode 创建出的节点&#xff0c…

如何在Linux系统部署Tale并实现无公网IP远程管理内网博客网站

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

一本免费开源的电子书籍!这个 71.8k star 的项目,让你轻轻松松学会算法【文末有福利】

话说作为一名程序员&#xff0c;肯定都少不了在准备面试的时候刷 LeetCode 的算法题吧。虽然面试考察的算法题在工作中用到的非常少&#xff0c;但是确实是能让我们对常用的数据结构有更深刻的理解&#xff0c;以及对思维逻辑有很大的提升。不过枯燥的刷题可能让新手无从下手&a…

C++入门:类与对象(1)

本篇作为学习类与对象后的一些记录与感想&#xff0c;不适用于第一次接触类和对象的朋友。 目录 1.面向过程和面向对象 2.类 2.1类的基础知识 2.2 类中的访问限定符 2.3类中的函数声明定义分离&#xff08;如何在不同的文件中实现同一个类&#xff09; 2.4类的封装 2.5类…

Python+selenium的web自动化之元素的常用操作详解

前言 今天呢&#xff0c;笔者想和大家来聊聊pythonselenium的web自动化之元素的常用操作&#xff0c;废话不多说直接进入主题吧 一、常用操作 关键代码&#xff1a; 点击&#xff1a;ele.click()输入内容&#xff1a;ele.send_keys("内容")清空内容&#xff1a;el…

conda配置多版本python

安装conda 以下任选下载 Anaconda Miniconda 配置conda环境变量 比如windows&#xff0c;在配置我的电脑中的环境变量&#xff0c;在系统变量的Path中新增下面内容 需要根据实际目录进行更改 D:\soft\miniconda3 D:\soft\miniconda3\Scripts D:\soft\miniconda3\Library\bi…

嵌入式驱动学习第七周——GPIO子系统

前言 GPIO子系统是用来统一便捷地访问实现输入输出中断等效果。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以关注本博主并订阅本专栏&#xff0c;一起讨论一起学习。现在关注就是老粉啦&#xff0…

云卓LS-01喊话器说明书-新版中文

一: 概述 LS-01 无人机喊话器适用于搭载无人机进行交通管制、现场指挥、应急救援、人群疏导、防疫宣传、景区安防、鱼塘巡视、林业防控等场景。产品具有喊话、警报、播放多媒体文件等多种功能。喊话器外壳采用尼龙加纤材质&#xff0c;具有抗、抗震、轻便灵活、外观新颖、质量稳…

NXopen C++ 装配体部件遍历 体积质量计算 NewMassProperties

打开装配体&#xff0c;逐一遍历部件测量体积&#xff0c;最后计算出装配体的总的体积和质量 NX1953VS2019 //1、模板文件添加头文件* #include <NXOpen/UnitCollection.hxx> #include <NXOpen/ScCollectorCollection.hxx> #include <NXOpen/Unit.hxx> #inc…

github 双因素验证

环境 华为手机 下载app 华为应用市场下载 输入对应验证码&#xff0c;然后一路下一步即可 联系方式 手机&#xff1a;13822161573 微信&#xff1a;txsolarterms QQ&#xff1a;419396409

实验一:配置IP地址

实验环境 主机A和主机B通过一根网线相连 需求描述 为两台主机配置IP地址&#xff0c;验证IP地址是否生效&#xff0c;验证同一网段的两台主机可以互通&#xff0c;不同网段的主机不能直接互通 一.实验拓扑 二.推荐步骤 1.为两台主机配置P地址&#xff0c;主机A为192.168.1.…

多无人机集群协同避障

matlab2020a正常运行 场景1规划结果 场景2规划结果 场景3规划结果 代码地址&#xff1a; 多无人机集群协同避障效果&#xff08;5架&#xff09;资源-CSDN文库