JavaScript 函数

Posted 一朵花花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 函数相关的知识,希望对你有一定的参考价值。

函数

语法格式

创建函数

// 创建函数 / 函数声明 / 函数定义
function 函数名(形参列表) 
    函数体
    return 返回值;

函数调用

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

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

举例:

function huahua() 
    console.log("huahua加油~");

调用之后:

huahua();

function huahua() 
    console.log("huahua加油~");

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

参数个数

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

  • 若实参个数比形参个数多,则多出的参数不参与函数运算
function sum(num1,num2)
    return num1 + num2;


var ret1 = sum(1,6,1);
console.log(ret1);

  • 若实参个数比形参个数少,则多出来的形参值为 undefined
function sum(num1,num2)
    return num1 + num2;


var ret2 = sum(6);
console.log(ret2);

1 + undefined 得到: NaN

函数表达式

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

function sum()
    let ret = 0;
    for(let i=0; i<arguments.length; i++)
        ret += arguments[i];
    
    return ret;

console.log(sum(11,55));
console.log(sum(9,5,2,6));

作用域

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

// 全局变量
var i = 10;
function a()
	// 局部变量
    var i = 20;
    console.log(i); //20

a();
console.log(i); //10

if(1 < 2)
    var m = 1;
    let n = 2;

console.log(m);
console.log(n);

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

总结

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

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

作用域链

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

以上是关于JavaScript 函数的主要内容,如果未能解决你的问题,请参考以下文章

javascript 中函数 function啥作用

javascript中的this与函数讲解

关于javascript函数变量作用域问题

JavaScript函数表达式与函数声明

javascript函数以及作用域简介

JavaScript 函数作用域执行环境(this)callapplybind 的用法