javaScript基础
day04
javaScript中的函数
为什么需要函数
函数:
function ,是被设计为执行特定任务的代码块
函数优势
有利于简化代码 方便复用,提高开发效率
函数的使用
函数的声明
function 函数名(参数) {
函数体
}
函数使用
函数名(参数); // 可以多次调用
案例:
function getData(){
// 无参函数
document.write('函数的使用')
}
getDta() // 函数的调用
// 利用函数求两个数的和,<br />
<script>
function getSum(num1,num2){
result = num1+num2
document.write(result)
}
getSum(5,8)
</script>
// 封装一个函数 求1--100 的累加和,<br />
<script>
function getSum100(){
let sum=0;
for (let i=1;i<=100;i++){
sum=sum+i;
}
document.write(sum)
}
getSum100()
</script>
函数的传参
带有参数的函数
语法:
function 函数名(参数以,参数二,参数三------参数n){
函数体
}
// 调用函数传参
函数名(参数1,参数2参数n)
案例:
// 封装一个函数 求两个数站之间的和
<script>
let s=0
function GetSum(start,end){
for (let i=start;i<=end;i++){
s+=i;
}
document.write(s)
}
GetSum(5,30)
// 封装一个函数 求一个数组内数据的和
<script>
function getSumArr(array){
let s=0;
for (let i=0;i<array.length;i++){
s+=array[i]
}
document.write(s)
}
getSumArr([10,20,30,55])
</script>
函数返回值
函数返回值用return 返回数据
return 返回数据
return 后面的数据不需要换行
return 换行之后的语句不会被执行 有退出
函数内只能出现一次return
函数默认无返回值 默认返回Undifind
函数可以没有return
// 函数返回值<br />
<script>
function fn(){
return 20;
}
let result = fn() // 当函数名比较长的时候可以声明一个变量来接受函数
document.write(fn()+'<br>')
document.write(result)
</script>
// 求数组中的最大值
<script>
function getMax(arry){
let max=arry[0]
for (let i =1;i<arry.length;i++){
if(max<arry[i]){
max=arry[i]
}
}
return max;
}
let Max=getMax([10,20,30,50,70,40,15])
document.write(Max)
</script>
return 只能返回一个值,需要返回多个值需要将数据存入数组
// 求两数的和与差
<script>
function getHeAndCha(x,y){
he = x+y;
cha =x-y;
let arr=[he,cha]
return arr;
}
let hc=getHeAndCha(10,15)
document.write(`和为${
hc[0]} 差为${
hc[1]}`)
</script>
//求数组内得最大值和最小值
<script>
function getMaxAndMin(array1){
let max=array1[0]
let min=array1[0]
for (let i=1;i<array1.length;i++){
if(max<array1[i]){
max=array1[i]
}
if(min>array1[i]){
min=array1[i]
}
}
return [max,min]
}
let values=getMaxAndMin([10,20,15,30,5,25,70,50,60])
document.write(`最大值:${
values[0]} 最小值:${
values[1]}`)
</script>
// 比较两个数得到大小
<script>
let num1 = +prompt('请输入第一个数')
let num2 = +prompt('请输入第二个数')
function getBig(x,y){
let re=x>y?x:y
return re
}
let max1=getBig(num1,num2)
document.write(max1)
</script>s
函数作用域
全局作用域 :在函数外部或整个script内有效
局部作用域 :也称为函数作用域,只在函数内部有效
块级作用域 :{}内有效
在JavaScript中变量根据作用域都得不同使用范围也不同
全局变量
局部变量
块级变量
特殊情况介绍
如果函数或者块级作用域内部,变量没有声明,直接赋值,也当全局变量看,一般不推荐这样使用
函数内部的形参可以看作局部变量
变量访问原则 :(就近原则,先在当前作用域下查找)
如下面输出结果?
let num = 20; // 全局变量
function fun(){
let num = 40; // 局部变量
console.log(num)
}
fun()
匿名函数
语法:
let fn =function(){
// 函数体
}
//调用:
fn()
例
```javascript
<script>
let fn=function(x,y){
document.write(x+y)
}
fn(5,6)
</script>
立即执行函数 (作用:防止变量污染
特点:立即执行)
多个立即执行函数之间需要用分号隔开
(function(形参) {
} (实参))
例子
(function(x,y){
document.write(x+y)
}(5,8))
// 案例
<script>
// 1、用户输入
let time=prompt("请输入时间总秒数")
// 2、计算
function getTime(t){
let h =parseInt(t/60/60%24)
let m = parseInt(t/60%60)
let s =parseInt(t%60)
h=h<10? '0'+h:h
m=m<10? '0'+m:m
s=s<10? '0'+s:s
return `时间是${
h}小时${
m}分${
s}秒`
}
// 3、输出结果
let str =getTime(time)
document.write(str)
</script>