五十二——六十二

news2024/11/25 12:46:29

五十二、JavaScript——函数简介

一、函数

  •  函数(Function)

                - 函数也是一个对象

                - 它具有其他对象所有的功能

                - 函数中可以储存代码,且可以在需要时调用这些代码

           

            语法:

                function 函数名(){

                    语句。。。

                }

           

  •             调用函数

                - 调用函数就是执行函数中存储的代码

                - 语法:

                    函数对象()

  •             检查函数对象

                - 使用(typeof 函数名)

                - 注意: 函数名不要加括号 :(typeof fn)即可

  • 函数创建 

        语法:

                function 函数名(){

                    语句。。。

                }

 

  •       调用函数

                - 调用函数就是执行函数中存储的代码

                - 语法:

                    函数对象()

 

  •             检查函数对象

                - 使用(typeof 函数名)

                - 注意: 函数名不要加括号 :(typeof fn)即可

<script>
        /*
            函数(Function)
                - 函数也是一个对象
                - 它具有其他对象所有的功能
                - 函数中可以储存代码,且可以在需要时调用这些代码
            
            语法:
                function 函数名(){
                    语句。。。
                }
            
            调用函数
                - 调用函数就是执行函数中存储的代码
                - 语法:
                    函数对象()

            检查函数对象
                - 使用(typeof 函数名)
                - 注意: 函数名不要加括号 :(typeof fn)即可
        */

        //创建一个函数对象
        function fn(){

            //语句
            console.log("你好!")
        }

        // console.log(fn)

        fn()
        fn()

        console.log(typeof fn)




    </script>

 五十三、JavaScript——函数的创建方式

一、函数的创建方式

  • 函数的定义方式

                1.函数声明

                    function 函数名([参数]){

                        语句。。。

                    }

                2. 函数表达式

                    const 变量 = function(){

                            语句。。。

                    }

                3. 箭头函数

                    () => {

                            语句。。。

                    }

                    - 只有一个语句的时候,大括号可以省略不写

 

 <script>
        /*
            函数的定义方式
                1.函数声明
                    function 函数名([参数]){
                        语句。。。
                    }

                2. 函数表达式
                    const 变量 = function(){
                            语句。。。
                    }

                3. 箭头函数
                    () => {
                            语句。。。
                    }
                    - 只有一个语句的时候,大括号可以省略不写
        */

        //函数声明
        function fn(){
            //语句
            console.log("函数声明定义的函数")

        }

        fn()
        console.log("函数声明中函数的类型"+typeof fn)

          //函数声明
        const fn2 = function fn(){
            //语句
            console.log("函数表达式")
        }
        fn2()
        console.log("函数表达式中函数的类型"+typeof fn2)

        const fn3 = () => {

            console.log("箭头函数")
        }
        fn3()
        console.log("箭头中函数的类型"+typeof fn3)

        //只有一个语句的时候,大括号可以省略不写
        const fn4 = () => console.log("只有一条语句时大括号可以省略")

        fn4()
        console.log("箭头中函数的类型"+typeof fn4)


    </script>

五十四、JavaScript——参数简介

一、参数简介

  •             参数

                - 在定义函数时,可以在函数中执行数量不等的形式参数(形参)

                - 在函数中定义参数,就相当于在函数内部声明了对应变量但没有赋值

           

  •             实际参数

                - 在调用函数时,可以在函数的()中传递数量不等的实参

                - 实参就会赋值给对应的形参

                - 参数

                    1. 如果实参和形参数量相同,则对应的实参赋值给对应的形参

                    2. 如果实参多于形参,则多余的实参不会使用

                    3. 如果形参多于实参,则多余的形参为undefinded

  •              参数类型

                    - JS中不会检查参数的类型,可以传递任何类型的值作为参数



 

            1.函数声明

                    function 函数名([参数]){

                        语句。。。

                    }

                2. 函数表达式

                    const 变量 = function([参数]){

                            语句。。。

                    }

                3. 箭头函数

                    ([参数]) => {

                            语句。。。

                    }

                    - 只有一个语句的时候,大括号可以省略不写

 

<script>
        /*
            定义一个可以求任意两个数和的函数
        */

        // function sum(){
        //     console.log(1+1)
        // }

        // sum()

        // const sum2  = function(){
        //     console.log(1+1)
        // }

        // sum2()

        // const su3 = () => console.log(1+1)

        // sun3()


        /*
            参数
                - 在定义函数时,可以在函数中执行数量不等的形式参数(形参)
                - 在函数中定义参数,就相当于在函数内部声明了对应变量但没有赋值
            

            实际参数
                - 在调用函数时,可以在函数的()中传递数量不等的实参
                - 实参就会赋值给对应的形参
                - 参数
                    1. 如果实参和形参数量相同,则对应的实参赋值给对应的形参
                    2. 如果实参多于形参,则多余的实参不会使用
                    3. 如果形参多于实参,则多余的形参为undefinded

                - 参数类型
                    - JS中不会检查参数的类型,可以传递任何类型的值作为参数



            1.函数声明
                    function 函数名([参数]){
                        语句。。。
                    }

                2. 函数表达式
                    const 变量 = function([参数]){
                            语句。。。
                    }

                3. 箭头函数
                    ([参数]) => {
                            语句。。。
                    }
                    - 只有一个语句的时候,大括号可以省略不写
        */


        //定义函数传入形参
        function fn(a,b){

            console.log(a + b)
        }

        //调用函数传入实参
        fn(1,10)


        //可以传递任何类型的参数
        fn(true,"张三")
    </script>

五十五、JavaScript——箭头函数的参数和默认参数

一、箭头函数的参数和默认参数

  • 当箭头函数中只有一个参数时,可以省略()

  • 定义参数参数时,可以为参数指定默认值,有实参传实参, 没实参传默认值

 

 <script>


    //
    const fn = (a, b) =>{

        console.log("a="+a);

        console.log("b="+b);

    }

    // 当箭头函数中只有一个参数时,可以省略()
    const fn2 = a => {
        console.log("a="+a)
    }

    fn2(123)



    // 定义参数参数时,可以为参数指定默认值
    // 有实参传实参, 没实参传默认值


    const fn3 = (a=10,b=29,c=22) => {

        console.log("a="+a)
        console.log("b="+b)
        console.log("c="+c)
        
    }

    //只传2个实参,第三个会使用默认值

    fn3(1,2)

    </script>

五十六、JavaScript——使用对象作为参数

一、对象作为参数传递

  • 对象可以作为参数传递

 

 <script>


        function fn(a){

            console.log("a=",a)  

            console.log(a.name)  //打印 "张三"
        }

        // 对象可以作为参数传递
        let obj = {name:"张三"}

        fn(obj)   // 打印 a= {name: '张三'}

</script>
  • 修改对象时,如果有其他变量指向该对象,则所有指向该对象的而变量都会收到影响
  • a.name = "李四“

 

 <script>

 function fn(a){ 

            a.name = "李四"  // 修改对象时,如果有其他变量指向该对象,则所有指向该对象的而变量都会收到影响

            console.log(a.name)  //打印 "李四"
        }

        // 对象可以作为参数传递
        let obj = {name:"张三"}

        fn(obj)   

        console.log(obj)

</script>
  • 修改变量时,只会影响当前变量,开辟了一个新的空间,
  • a = { }

 

 <script>

        function fn(a){ 

             a = {}  //修改变量时,只会影响当前变量,开辟了一个新的空间,

            a.name = "李四"  // 修改对象时,如果有其他变量指向该对象,则所有指向该对象的而变量都会收到影响

            console.log(a.name)  //打印 "李四"
        }

        // 对象可以作为参数传递
        let obj = {name:"张三"}

        fn(obj)   

        console.log(obj)  //打印张三

</script>
  • 有默认值时先每次调用时会重新创建默认值,创建新的对象,
  • 两次调用并不是同一个对象,第二次调用相当于又内存中又新开辟了一个空间来存储对象
  • function fn(a = {name:"张三"})  默认值 张三

 

     <script>


        function fn(a = {name:"张三"}){ 

           console.log("a= ",a)

            a.name = "李四"  // 修改对象时,如果有其他变量指向该对象,则所有指向该对象的而变量都会收到影响

            console.log("a= ",a)  //打印 "李四"
        }

        


        //两次调用
        fn()

        fn()



        // 传递实参时,传递的并不是变量本身,而是变量中存储的值
        
    </script>
  • function fn(a = fun) 
  • a 和 fun 指向同一个 对象,如果对象的值被修改了,那么影响就会一直持续下去,导致后面指向该对象的变量的值全部被修改

 

        
    <script>
        let fun = {name:"张三"}
        

        // 每次调用共用一个对象
        function fn(a = fun){ 

           console.log("a= ",a)

            a.name = "李四"  

            console.log("a= ",a)  
        }

        


        //两次调用
        fn()

        fn()



        // 传递实参时,传递的并不是变量本身,而是变量中存储的值
        
    </script>

 五十七、JavaScript——函数作为参数

一、函数作为参数

  • 在JS中,函数也是一个对象(一等函数)

                    - 别的对象能做的事,函数也可以

  <script>
        function fn(a){
            console.log("a=",a)
        }

        /*
            在JS中,函数也是一个对象(一等函数)
                - 别的对象能做的事,函数也可以
        */

        function fn2(){

            console.log("我是fn2")
        }


        //把fn2函数作为参数,传入函数中
        fn(fn2)


        fn(() =>console.log("我是箭头函数"))

    </script>

 五十八、JavaScript——函数的返回值

一、函数的返回值

  • 在函数中,可以通过return关键字来指定函数的返回结果

                        返回值就是函数的执行结果,函数调用完完毕返回值便会作为结果返回

  •   任何值都可以作为返回值使用(包括对象和函数之类)

  • 如果return后不跟任何值,则相当于返回undefined

 

   <script>

        // function sum(a,b){
        //     console.log(a + b)
        //     //计算完成之后,将计算的结果返回而不是直接打印
        // }

        // sum(123,111)

        let sum = ""
        function fu(a,b){
            /*  
                在函数中,可以通过return关键字来指定函数的返回结果
                    返回值就是函数的执行结果,函数调用完完毕返回值便会作为结果返回\
                    
                任何值都可以作为返回值使用(包括对象和函数之类)
                如果return后不跟任何值,则相当于返回undefined
                
            */
            sum = a +b
            return sum
        }

        fu(111,222)

        console.log("sum="+sum)


    </script>

 五十九、JavaScript——箭头函数的返回值

一、箭头函数的返回值

  • 箭头函数的返回值可以直接写在箭头后

                    如果直接在箭头后面设置返回值时,对象字面量必须使用()括起来

                    const fn = () => ({"name":"张三"})

  • 在箭头后面设置返回值,如果是形参的形式,可以不带大括号

  •  const sum = (a, b) => a + b

                   

 

    <script>
         
         /*
            箭头函数的返回值可以直接写在箭头后
                如果直接在箭头后面设置返回值时,对象字面量必须使用()括起来


                在箭头后面设置返回值,如果是形参的形式,可以不带大括号
         */

         const sum = (a, b) => a + b

         const fn = () => ({"name":"张三"})

         let resul = sum(1,2)

         console.log(resul)


         //设置一个变量result来接收执行函数的返回结果
         result = fn()

         console.log(result)

    </script>

六十、JavaScript——全局和局部作用域

一、作用域

作用域(scope)

                - 作用域指的是一个变量的可见区域

                - 作用域有两种

                    1. 全局作用域

                        - 全局作用域在网页运行时创建,在网页关闭时销毁

                        - 所有直接编写script标签中的代码都位于全局作用域中

                    2. 局部作用域

                        - 块作用域是一种局部作用域

                        - 块作用域在代码块执行时创建,代码块执行完它就销毁

                        - 在块作用域中声明的变量是局部变量,只有在块内部访问,外部无法访问

二、全局作用域

  •  全局作用域在网页运行时创建,在网页关闭时销毁

  • 所有直接编写script标签中的代码都位于全局作用域中

  <script>
          let a = "全局变量a"

        {
            {
                //任意位置都能访问全局变量
                console.log(a)
            }
        }

    </script>

 二、局部作用域

  • - 块作用域是一种局部作用域
  • - 块作用域在代码块执行时创建,代码块执行完它就销毁
  • - 块作用域在代码块执行时创建,代码块执行完它就销毁
 <script>
   
        // 局部作用域
        {
            let b = "局部变量b"
        }

        //块外无法访问局部变量b
        console.log(b)

    </script>

 完整代码:

  <script>

        /*
            作用域(scope)
                - 作用域指的是一个变量的可见区域
                - 作用域有两种
                    1. 全局作用域
                        - 全局作用域在网页运行时创建,在网页关闭时销毁
                        - 所有直接编写script标签中的代码都位于全局作用域中

                    2. 局部作用域
                        - 块作用域是一种局部作用域
                        - 块作用域在代码块执行时创建,代码块执行完它就销毁
                        - 在块作用域中声明的变量是局部变量,只有在块内部访问,外部无法访问
        */
    
        let a = "全局变量a"

        {
            {
                //任意位置都能访问全局变量
                console.log(a)
            }
        }



        // 局部作用域
        {
            let b = "局部变量b"
        }

        //块外无法访问局部变量b
        console.log(b)


    </script>

 六十一、JavaScript——函数作用域

一、函数作用域

    <script>
        /*
            函数作用域
                - 函数作用域也是一种局部作用域
                - 函数作用域在函数调用时产生,调用结束后销毁
                - 函数每次调用都会产生一个全新的函数作用域
        */


        function fn(){

            let a = "fn中的变量a"
        }

        // 三次调用函数,三次产生新的函数作用域
        fn()
        fn()
        fn()
    </script>

六十二、JavaScript——作用域链

一、作用域链

  • 作用域链

                    - 找变量的一个流程

                    - 当我们使用一个变量时

                        JS解释器会优先在当前作用域中寻找变量

                        如果找到了则直接使用,

                        如果没找到,则去上一层作用域中寻找,找到了则使用

                        如果没找到,则继续去上一层中寻找,

                        如果全局作用域都没找到,则报 xxx is not definded

  • 使用变量遵循就近原则,在访问变量是选择离它最近的同名变量

  <script>

        /*
            作用域链
                - 找变量的一个流程
                - 当我们使用一个变量时
                    JS解释器会优先在当前作用域中寻找变量
                    如果找到了则直接使用,
                    如果没找到,则去上一层作用域中寻找,找到了则使用
                    如果没找到,则继续去上一层中寻找,
                    如果全局作用域都没找到,则报 xxx is not definded

            使用变量遵循就近原则,在访问变量是选择离它最近的同名变量
        */

        let a = 10

        {
            let a = "第一代码块中的a"
            {
                let a = "第二代码块中的a"

            
                //根据就近原则访问,离它最近的变量a
                console.log(a)
            }
        }
    </script>

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

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

相关文章

drm框架介绍

Drm框架介绍 DRM是Linux目前主流的图形显示框架&#xff0c;相比FB架构&#xff0c;DRM更能适应当前日益更新的显示硬件。比如FB原生不支持多层合成&#xff0c;不支持VSYNC&#xff0c;不支持DMA-BUF&#xff0c;不支持异步更新&#xff0c;不支持fence机制等&#xff0c;而这…

嗅探网站视频

前置知识 MP4是我们常见的视频格式&#xff0c;往往我们在播放服务器视频时直接就是请求的MP4视频源。但其实这样并不好&#xff0c;MP4头文件[ftypmoov]较大&#xff0c;初始化的播放需要下载完整的头文件并进行解析&#xff0c;之后再下载一定长度的可播视频片段才能进行播放…

java 瑞吉外卖day4及补全功能 文件上传下载 菜品分页查询 Dto类 菜品状态修改 菜品停售以及菜品删除

文件上传下载 文件下载介绍 文件上传代码实现 服务端上传&#xff1a; RestController RequestMapping("/common") Slf4j public class CommonController {Value("${reggie.path}")private String basePath;//从配置文件读取设置好的basePathPostMapping…

【教程】5步免费白嫖使用Grammarly Premium高级版

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 1、使用Chrome或者Edge浏览器。 2、安装名为Cookie-Editor的谷歌Chrome扩展。 https://chrome.google.com/webstore/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm 2、打开Grammarly网站&#xff0c;…

DBCO-PEG-Cyanine5.5,CY5.5 PEG DBCO,二苯并环辛炔-聚乙二醇-Cyanine5.5

中文名&#xff1a;二苯并环辛炔-聚乙二醇-菁染料CY5.5&#xff0c;二苯并环辛炔-聚乙二醇-Cyanine5.5&#xff0c;菁染料CY5.5PEG环辛炔&#xff0c;花青素Cyanine5.5-聚乙二醇-二苯并环辛炔英文名&#xff1a;DBCO-PEG-CY5.5&#xff0c;DBCO-PEG-Cyanine5.5&#xff0c;Cyan…

位运算、递推与递归、前缀和、差分、二分

题目链接&#xff1a;位运算、递推与递归、前缀和、差分、二分 - Virtual Judge (vjudge.net) A.洛谷 - P2280 样例输入&#xff1a; 2 1 0 0 1 1 1 1样例输出&#xff1a; 1 分析&#xff1a;这道题先用二维前缀和处理一下地图&#xff0c;这样我们就可以在O(1)的复杂度内…

SIT-board 远程交互式白板的实现

来自上海应用技术大学的「SIT-board」团队&#xff0c;在七牛云校园黑客马拉松中勇夺冠军&#xff0c;以下是他们的参赛作品——SIT-board远程交互白板的实现过程。 需求分析 基本绘图功能 作为一个在线协作白板&#xff0c;离线的本地化的白板是一切功能的前提。本地白板中需…

Uniapp安卓apk原生云端打包完整过程

1.进入HbuliderX,找到菜单的发行 2.选择原生App-云打包&#xff0c;接着会弹出一个对话框&#xff0c;如图&#xff1a; 3.在对话框中勾选Andriod&#xff08;apk包&#xff09;、选择使用云端证书。 证书说明如下&#xff1a; (1)使用自有证书&#xff1a;开发者自己生成…

左偏树解决猴王问题

一 问题描述 在森林里住着 N 只好斗的猴子。开始时&#xff0c;猴子们彼此不认识&#xff0c;难免吵架&#xff0c;吵架只发生在互不认识的两只猴子之间。吵架发生时&#xff0c;两只猴子都会邀请它们中最强壮的朋友来决斗。决斗过后&#xff0c;两只猴子和它们的所有朋友都认…

screenviewer工具在树莓派3B+上的适配

目录 工具简介 适配初衷 第三方模块适配问题 源码代编译问题 最后完美运行如图 工具简介 屏幕截图web端展示功能、视频设备如摄像头、视频流等接入&#xff0c;并可web端展示。 适配初衷 这样的工具如果能完美运行在嵌入式linux上是极好的&#xff0c;目前仅适配了wind…

为什么你的程序跑不满CPU?——简单聊聊多核多线程

最近同事测试自己的程序&#xff0c;感觉处理耗时太长&#xff0c;一看CPU使用率&#xff0c;才25%。想要提高CPU使用率降低处理时长&#xff0c;于是向我询问。以此为契机写了这篇&#xff0c;聊聊多核多线程。水平有限&#xff0c;仅供参考。 1.单核单线程 一切开始的前提是…

CCProxy + Proxifier 通过另一台电脑访问网络

问题场景描述&#xff1a; 公司提供的 vpn 只提供了 windows 客户端&#xff1b;Mac没有客户端&#xff0c;而家里的 windows 电脑是多年前的旧电脑&#xff0c;配置不足&#xff0c;所以不能使用&#xff1b;这里整理了一种 搭建跳板机 作为中专的方式进行访问 搭建过程 1.…

OpenCV(7)-OpenCV中的滤波器

OpenCV中的滤波器 图像滤波 滤波的作用&#xff1a;一幅图像通过滤波器得到另一幅图像&#xff1b;其中滤波器又称为卷积核&#xff0c;滤波的过程被称为卷积 卷积的几个基本概念&#xff1a; 卷积核的大小&#xff1a; 卷积核一般为奇数&#xff0c;如3 * 3,5 * 5&#xf…

【DELM回归预测】基于matlab灰狼算法改进深度学习极限学习机GWO-DELM数据回归预测【含Matlab源码 1867期】

⛄一、基本极限学习机算法简介 1 核极限学习机 极限学习机(ELM)是一种含L个神经元的单隐藏层前馈神经网络(SLFN)算法&#xff0c;相比于其他神经网络(如BP)具有训练速度快和泛化能力强等特点。但是ELM算法是随机生成各个神经元连接权值和阈值&#xff0c;易造成算法的波动性和…

架构师必读 —— 逻辑模型(4)

解决问题的基本步骤 如果情绪急躁&#xff0c;过于钻牛角尖&#xff0c;坚持“这就是唯一结论”的态度&#xff0c;就会阻碍逻辑思考。情绪急躁、钻牛角尖的行为属短见薄识&#xff0c;只能导致主观臆断。一味地想“简短地传达观点”时&#xff0c;往往会跳过三角逻辑中的论据和…

VSCode下载和安装详细步骤

一、下载 点击 这里 到Visual Studio Code官网下载。 选择下载版本&#xff0c;大家按自己的电脑版本进行选择&#xff08;这里我选的是Windows 64位的&#xff09;。 二、安装 1. 下载好之后&#xff0c;双击进行安装&#xff1b; 2. 选择【我同意此协议】&#xff0c;再点…

如何快速上手react中的redux管理库

前言&#xff1a; 什么是redux&#xff1f;redux和vuex一样&#xff0c;都被统称为状态管理库&#xff0c;是核心数据存贮与分发、监听数据改变的核心所在。 可以简单说下redux和vuex的区别&#xff1a; 相同点 state 共享数据流程一致&#xff1a;定义全局state&#xff0c;…

【DELM回归预测】基于matlab粒子群算法改进深度学习极限学习机PSO-DELM数据回归预测【含Matlab源码 1884期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年&#xff0c;极限学习机&#xff08;extreme learning machine,ELM&#xff09;理论被南洋理工大学的黄广斌教授提出&#xff0c;ELM是一种单隐含层前馈神经网络&#xff08;single-hidden layer feedforward neural network,SLFN&am…

静态HTML个人音乐网页 大学生网页设计作业 简单音乐娱乐网页制作 DW个人网站模板下载 大学生简单音乐网页作品代码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于风驱动算法改进的DELM预测-附代码

风驱动算法改进的深度极限学习机DELM的回归预测 文章目录风驱动算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.风驱动算法4.风驱动算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1…