当前位置: 首页 > article >正文

js:函数

函数

函数:实现抽取+封装,执行特定任务的代码块,方便复用

声明

函数命名规范

尽量小驼峰

前缀应该为动词,如getName、hasName

函数的调用

函数体是函数的构成部分

函数传参

参数列表里的参数叫形参,实际上写的数据叫实参

形参可以看作变量,如果变量不给值,默认为未定义(undefined)

例如一个两数求和的函数,如果用户在使用的时候不传入实参,两个未定义(undefined+undefined)的结果是什么?

NaN

为了防止出现异常的NaN,我们可以在用户不输入参数的时候提供默认参数(形参默认值),可以默认为0

形参默认值写在函数里形参声明的地方

 function getArrSum(arr=[]) {
            //保证程序不报错
            let sum=0
            for (let i = 0; i < arr.length;i++){
                sum+=arr[i]
            }
            console.log(sum);
            
        }
        let arr=[]
        for(let i=0;i<10;i++){
            arr[i]=+prompt('请输入数字:')
        }
        getArrSum(arr)

除了这种写法还有

逻辑中断

猜猜这段代码的打印结果?

let age=18
        console.log(false&&age++)
        console.log(age)

答案是false和18,age没有变;因为&&左边为false,所以不执行右边的表达式

关于Boolean的转换

‘’ 、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true
一些其他隐式转换:
' '+1='1'
' '-2='-2'
null经过数字转换为0,null+3=0+3=3
undefined经过数字转换为NaN(除了字符串拼接其余都为NaN),undefined+3=NaN
 let n = undefined
        console.log(n + 'sss');

函数返回值

把函数处理完的结果返回给调用者

用return关键字

函数体内使用return关键字能返回函数体执行的结果交给外部使用

return后面的代码不执行

return函数没有return的时候,函数默认返回undefined

返回多个数据

  function getArr(arr = []) {
            for (let i = 0; i < 5; i++) {
                arr[i] = +prompt('请输入数字:')
            }
        }
        function getMax(arr = []) {
            let min = arr[0]
            let max = arr[0]
            for (let i = 0; i < 5; i++) {
                if (arr[i] > max) max = arr[i]
                if (arr[i] < min) min = arr[i]
            }
            return [max, min]//新数组
        }
        let arr = []
        getArr(arr)
        console.log(arr)
        console.log(getMax(arr))

断点调试进入函数内部f11(步入),不进入函数内部f10(步过)

js没有函数重载,只要函数名一样,写在后面的函数会覆盖前面的函数

js里传递的实参个数可以少于形参的个数,会自动填为undefined;如果实参多余形参,多余的实参会被忽略

break结束循环和switch,return结束函数

作用域

限定数据的可用性代码范围就叫作用域,作用域提高了程序逻辑的局部性、增强了可靠性、减少了名字冲突

相应的,变量有局部变量和全局变量之分

如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

但是有一种情况,函数内部的形参可以看做是局部变量

变量访问原则

只要是代码,就至少有一个作用域

写在函数内部的局部作用域

如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域

在能访问的情况下,先局部,局部没有再全局

采取就近原则查找变量的最终值

匿名函数

第一种写法

函数表达式:将匿名函数赋值给一个变量,并且通过变量名进行调用

和go像

具名函数(有名字的函数)的调用可以放在任何位置

函数表达式必须先声明再调用

后面学api会用

第二种写法

立即执行函数

括号的位置不同,在声明的时候执行

多个立即执行的时候一定要在后面加分号(分号也可以写前面)

好处是防止变量污染

函数调用练习

 let num = prompt('用户输入秒数')
        function getTime(t) {
            let day = parseInt(t / 3600 / 24)
            let h = parseInt(t / 3600 % 24)
            let m = parseInt(t / 60 % 60)
            let s = parseInt(t % 60)
            day < 10 ? '0' + day : day
            h = h < 10 ? '0' + h : h
            m = m < 10 ? '0' + m : m
            s = s < 10 ? '0' + s : s
            return `${t}转换为${day}天${h}小时${m}分钟${s}秒`
        }
        let str = getTime(num)
        document.write(str)

函数里不声明直接赋值外部可以访问,会有风险


http://www.kler.cn/a/414781.html

相关文章:

  • flink中barrier不对齐的原因和影响
  • Web day02 Js Vue Ajax
  • 33 基于单片机的智能窗帘控制系统
  • 基于Springboot的流浪宠物管理系统
  • Leetcode - 周赛424
  • 从零开始:NetBox 4.1 Docker 部署和升级
  • 【Db First】.NET开源 ORM 框架 SqlSugar 系列
  • Github 2024-11-28 Go开源项目日报Top10
  • pyspark实现基于协同过滤的电影推荐系统
  • MQ高级2:MQ的可靠性
  • 鸿蒙开发-在ArkTS中制作音乐播放器
  • GDPU Android移动应用 数据存储
  • [Redis#5] hash | 命令 | 内部编码 | 应用 | cache: string, json, hash对比
  • 英语-日常笔记
  • 大数据 HDFS和MapReduce综合实训
  • BAT WPS OFFICE免登录工具
  • hadoop_zookeeper详解
  • 云原生时代的轻量级反向代理Traefik
  • 《C++搭建神经网络基石:开启智能编程新征程》
  • IDEA 2024 Maven 设置为全局本地仓库,避免新建项目重新配置maven
  • 2024-11-25 二叉树的定义
  • Java基础之控制语句:开启编程逻辑之门
  • 国外媒体发布新闻稿/海外媒体网站发稿创历史新潮流
  • C# 基于WPF实现数据记录导出excel
  • COMSOL工作站:配置指南与性能优化
  • 单片机知识总结(完整)