JavaScript 函数

x33g5p2x  于2022-02-07 转载在 JavaScript  
字(1.1k)|赞(0)|评价(0)|浏览(568)

语法格式

创建函数

  1. // 创建函数 / 函数声明 / 函数定义
  2. function 函数名(形参列表) {
  3. 函数体
  4. return 返回值;
  5. }

函数调用

函数定义并不会执行函数体内容,必须要调用才会执行,调用几次就会执行几次

  1. 函数名(实参列表) // 不考虑返回值
  2. 返回值 = 函数名(实参列表) // 考虑返回值

举例:

  1. function huahua() {
  2. console.log("huahua加油~");
  3. }

调用之后:

  1. huahua();
  2. function huahua() {
  3. console.log("huahua加油~");
  4. }

函数的定义和调用的先后顺序没有要求 (这一点和变量不同,变量必须先定义再使用)

参数个数

实参和形参之间的个数可以不匹配,但是实际开发一般要求形参和实参个数要匹配

  • 若实参个数比形参个数多,则多出的参数不参与函数运算
  1. function sum(num1,num2){
  2. return num1 + num2;
  3. }
  4. var ret1 = sum(1,6,1);
  5. console.log(ret1);

  • 若实参个数比形参个数少,则多出来的形参值为 undefined
  1. function sum(num1,num2){
  2. return num1 + num2;
  3. }
  4. var ret2 = sum(6);
  5. console.log(ret2);

1 + undefined 得到: NaN

函数表达式

函数内默认的内置对象 arguments,可以使用其获取动态传入的参数列表

  1. function sum(){
  2. let ret = 0;
  3. for(let i=0; i<arguments.length; i++){
  4. ret += arguments[i];
  5. }
  6. return ret;
  7. }
  8. console.log(sum(11,55));
  9. console.log(sum(9,5,2,6));

作用域

全局作用域: 在整个 script 标签中,或者单独的 JS 文件中生效
局部作用域 / 函数作用域: 在函数内部生效

  1. // 全局变量
  2. var i = 10;
  3. function a(){
  4. // 局部变量
  5. var i = 20;
  6. console.log(i); //20
  7. }
  8. a();
  9. console.log(i); //10

  1. if(1 < 2){
  2. var m = 1;
  3. let n = 2;
  4. }
  5. console.log(m);
  6. console.log(n);

var 在条件 / 控制等控制语句中定义,外边还能使用
let 只对本控制语句作用域有效

总结

varlet
函数内定义函数外不可见函数外不可见
条件、循环控制语句中定义外部可见外部不可见

let 的作用域只能在花括号内

作用域链

  • 函数可以定义在函数内部
  • 内层函数可以访问外层函数的局部变量.
  • 内部函数可以访问外部函数的变量,采取的是链式查找的方式,从内到外依次进行查找

相关文章