JavaScript基础 ——函数

152 阅读3分钟

函数

什么是函数

function,函数是被设计为执行特定任务的代码块

函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用。

函数的声明和调用

1.函数声明

image.png

函数名命名规范

  • 和变量命名基本一致
  • 尽量小驼峰式命名法
  • 前缀应该为动词
  • 命名建议:常用动词约定

2.函数调用

函数的调用语法

image.png

  • 注意:声明(定义)的函数必须调用才会真正被执行,使用 () 调用函数
// 1 声明函数
function  函数名(){
    函数体
}
// 2. 函数调用
函数名()

函数传参

声明语法 image.png

参数列表

  • 传入数据列表
  • 声明这个函数需要传入几个数据
  • 多个数据用逗号隔开

调用函数时,需要传入几个数据就写几个,用逗号隔开

image.png

  1. 形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
  2. 实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
  3. 形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值
  4. 开发中尽量保持形参和实参个数一致

函数传参-参数默认值

形参: 可以看做变量,但是如果一个变量不给值,默认是什么?

  • undefined

但是如果做用户不输入实参,刚才的案例,则出现 undefined + undefined 结果是什么?

  • NaN

我们可以改进下,用户不输入实参,可以给形参默认值,可以默认为 0, 这样程序更严谨,可以如下操作:

   function getSum(x=0, y=0) {
      // x y 不给默认值就是undefind
      document.write(x + y)
    }
    getSum()  //假设用户不传入实参,会导致相加的结果是NaN
    getSum(3,6) //9

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

函数的返回值

当函数需要返回数据出去时,用return关键字

function getSum(arr) {
      let sum = 0
      for (let i = 0; i < arr.length; i++) {
        sum += arr[i]
      }
      return (sum)//返回结果
    }
    let res = getSum([1, 4, 7, 3, 7, 3,8])  //将返回的结果用一个变量接收
    document.write(res) //将结果显示出来

细节

  • 在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用
  • return 后面代码不会再被执行,会立即结束当前函数,所以 return 后面的数据不要换行写
function fn1(x, y) {
     console.log(111) // 可以执行
     return x + y
     console.log(1112222) // 不会执行 
     // 1 return关键字后面的代码不会被执行
     // 2 return关键字后面的数据不要换行,否则会出现 undefined
   }
   console.log(fn1(3, 4))
  • return函数可以没有 return,这种情况函数默认返回值为 undefined
 function fn() {
   }
   let re = fn()
   console.log(re) //控制台输出undefined

函数细节补充
1.两个相同的函数后面的会覆盖前面的函数
2.函数一旦碰到return就不会在往下执行了 函数的结束用return
3.在Javascript中 实参的个数和形参的个数可以不一致

  • 如果形参过多 会自动填上undefined (了解即可)
  • 如果实参过多 那么多余的实参会被忽略 (函数内部有一个arguments,里面装着所有的实参)
 // 1 函数名相同 后面的会覆盖前面的
   function fun() {
     console.log(111)

   }
   function fun() {
     console.log(222)
   }
   fun() // 输出222,会覆盖前面的111
   // 2 参数不匹配
   function fun1(x, y) {
     console.log(x + y)

   }
   // 2.1 实参多余形参,剩余的实参不参与运算
   fun1(1, 2, 3) // 3
   // 2.2 实参少于形参  [会得到结果]([url]([url]([url]([url](url))))) NaN
   fun1(5)  // 5 + undefined = NaN