JavaScript 函数

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

语法格式

创建函数

// 创建函数 / 函数声明 / 函数定义
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 的作用域只能在花括号内

作用域链

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

相关文章