JavaScript函数

1.为什么需要函数
2.函数使用
3.函数传参
4.函数返回值
5.作用域
6.匿名函数

函数魅力:代码复用

一、为什么需要函数

 1.函数:function,执行特定任务的代码块。
 2.说明:
 函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,优势:有利于精简代码方便复用。
 比如alert()、prompt()和console.log()都是一些js函数,属于已经封装好,可以直接拿来用。

二、函数使用

1.函数的声明语法
function 函数名(){
函数体
}
例如:

function sayHi(){
   document.wirte('hai~~')
}

函数名命名规范:
*和变量命名基本一致
*尽量驼峰式命名法
*前缀应该为动词
*命名建议:常用动词约定
在这里插入图片描述
2.函数的使用
语法:
function 函数名(){
函数体
}
函数名()

//求1-100累加和
 function getSum(){
     let sum = 0;
     for(let i=1;i<=100;i++){
         sum+=i;
     }
     console.log(sum);
 }
 getSum();

三、函数传参

1.语法:
function 函数名(参数列表){
函数体
}

function getSquare(num1){
   document.write(num1*num1);
}

function getSquare(num1,num2){
   document.write(num1+num2);
}


function getSum(start,end){
    let sum = 0;
    for(let i=start;i<=end;i++){
        sum+=i;
    }
    console.log(sum);
}
getSum(1,50);//1275

2.参数默认值
2.1.形参:可以看做变量,但是如果一个变量不给值,默认是什么?
undefined
2.2.不输入实参,则出现undefined+undefined结果是什么?
NaN
2.3.我们可以改进下,用户不输入实参,可以给形参默认值,可以默认为0

function getSum(x=0,y=0){
    document.write(x+y);
}
getSum()//结果是0,而不是N
getSum(1,2)//结果是3

ps小提示:
这个默认值只会在缺少实参参数传递时才会被执行,所以有参数会优先执行传递过来的实参,否则默认为undefined

四、函数返回值

1.在函数体中使用return关键字能将内部的执行结果交给函数外部使用。

function getTotalPrice(x,y){
    return x+y;
}
let sum = getTotalPrice(1,2)
console.log(sum);//3
  1. return后面代码不会再被执行,会立即结束当前函数(因此return后面的数据不要换行写)

3.函数可以没有return,这种情况函数默认返回值为undefined。

function fn(){
 }
 let re = fn()
 console.log(re)//undefined

4.返回最大值和最小值

function getArrValue(arr = []){
    let max = arr[0];
    let min = arr[0];
    for(let i=1;i<arr.length;i++){
        if(max<arr[i]){
            max = arr[i];
        }
        if(min>arr[i]){
            min = arr[i];
        }
    }
    return [max,min];
}
let newArr = getArrValue([1,3,5,7,9]);
console.log(`数组的最大值是:${newArr[0]}`);//9
console.log(`数组的最小值是:${newArr[1]}`);//1

五、作用域

1.全局作用域(全局有效)
作用于所有代码执行的环境(整个script标签内部)或者一个独立的js文件。
2.局部作用域(局部有效)
作用于函数内的代码环境,就是局部作用域。因为跟函数有关系,所以也称为函数作用域。

let num = 10;//全局变量
console.log(num)
function fn(){
    console.log(num);
}
fn()

function fun(){
    //局部变量
    let str = 'pink';
}
console.log(str)//错误

3.易错点:

        //1.如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐
        let num = 20;
        function fn(){
            num = 10;//全局变量来看,强烈不允许
        }
        fn()
        console.log(num);//10

        //2.但是有一种情况,函数内部的形参可以看做是局部变量
        function fun(x,y){
            //形参可以看作是函数的局部变量
            console.log(x)
        }
        fun(1,2)
        console.log(x);//error

4.变量访问原则:
4.1只要是代码,就至少有一个作用域
4.2写在函数内部的局部作用域
4.3如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
4.4访问原则:
在能够访问到的情况下:先局部,局部没有在找全局。(就近原则)

六、匿名函数

1.函数表达式:
将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式
语法:

 let fn = function(){
           //函数体
   }
   调用:
 fn()

2.立即执行函数
场景:避免全局变量之间的污染
语法:

//方法1:
(function(){
    console.log(11);
})();

//方法2:
(function(){
    console.log(11);
}());
//不需要调用,立即执行

1.立即执行函数有什么作用?
防止变量污染
2.立即执行函数需要调用吗?有什么注意事项?
*无需调用,立即执行,其实本质已经调用了
*多个立即执行函数之间用分号隔开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值