JavaScript-函数

函数

函数:是被设计成执行特定任务的代码块,函数可以把具有相同或相似逻辑代码包裹起来,通过函数调用执行这些被包裹的代码逻辑。这么做的优势是有利于精简代码,方便复用。

函数的使用

函数的声明语法

function 函数名 (){ 
	函数体
}
function sayHi (){ 
	document.write('Hello!');
}

命名规范

  • 尽量使用驼峰命名

  • 前缀应该为动词

    在这里插入图片描述

函数的调用

函数只有被调用了,函数体内的代码逻辑才会被执行

函数名();
sayHi();

函数的参数

若函数完成功能需要调用者传入数据,那么就需要有参数的函数,这样可以极大的提高函数的灵活性

声明语法

function 函数名(参数列表){
    函数体;
}
参数列表:传入数据列表,声明这个函数哟啊传入几个数据,多个数据之间用逗号隔开

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

调用

函数名(传递的参数列表);
getSum(56);//参数用逗号隔开;页面会输出11;此处的参数为实参

形参:声明函数时写在函数名右边小括号里的叫形参。 (形式上的参数)

实参:调用函数时写在函数名右边小括号里面的叫实参。 (实际上的参数)

当带参数的函数被调用,没有传入参数时,会出现默认传入undefined 的参数,结果会是NaN;此时我们可以对函数做如下改进:给函数一个形参默认值

function getSum(num1=0 , num2=0){
    document.write(num1+num2);
}

当不传入形参的值时,形参会使用声明时给的值

函数的返回值

当调用某个函数,这个函数会返回一个结果出来,这就是有返回值的函数

在函数体的最后一行前进行返回
return 数据;

function getSum(num1=0 , num2=0){
    return num1+num2;
}

没有返回值,默认返回undefined

作用域

通常来说,一段程序代码中所用到的名字并不是总是有效可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。 作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

全局作用域

作用于所有代码执行的环境;整个script标签内部或一个独立的JS文件。

let num = 10 ;//全局作用域
console.log(num);
function f(){
	console.log(num);
}
f();

局部作用域

作用于函数内部的代码环境就是局部作用域。因为跟函数有关系,所以也称函数作用域。

function f(){
    let num = 10 ;//局部作用域,只能在函数体内部或循环体内部被使用
	console.log(num);
}
f();

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

匿名函数

没有名字的函数,无法直接使用

使用方式:

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

    • 语法:

      let fn = function(){
          函数体
      }
      let fn = function(){
          console.log('我是函数表达式');
      }
      
      //调用
      fn();
      
    • 函数表达式和具名函数的不同

      • 具名函数的调用可以写到任何位置,而函数表达式必须先声明函数表达式,在调用
  • 立即执行函数(匿名函数):避免全局变量之间的污染

  • 语法:必须加分号

    (function(){
        函数体
    }
    )()
    
    (function(x,y){
       console.log(x+y);
    }
    )(1,2)
    
    (function(){
        console.log('立即执行函数');
    }
    )()

其他补充

  • 两个相同的函数,后面的会覆盖前面的函数。
  • 在不同作用域下,变量的使用遵循就近原则
  • 在JavaScript中实参的个数和形参的个数可以不一致。
    • 如果形参过多,会自动填上undefined。
    • 如果实参过多,那么多余的实参会被忽略(函数内部有一个arguments里面装着所有的实参)。
  • 函数一旦碰到return就不会继续执行下去了;函数的结束用return。

逻辑中断

短路:只存在于&&和||中,当满足一定条件会让右边的代码不在执行

function getSum(x,y){
    x=x||0;
    y=y||0;
    console.log(x+y);
}
getSum(1,2);//3
getSum();//0

转换为Boolean类型

’ '、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack丶空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值