函数的封装和使用,作用域

216 阅读3分钟

函数的封装和使用,作用域

一.函数的使用

function 函数名() {
    函数体
}

例:

function sayHi() {
       document.write('哈喽')
}

2.函数名命名规范

➢ 和变量命名基本一致

➢ 尽量小驼峰式命名法

➢ 前缀应该为动词

➢ 命名建议:常用动词约定

动词:

can:判断是否可执行某个动作

has:判断是否含义某个值

is:判断是否为某个值

get:获取某个值

set:设置某个值

load:加载某些数据

3.函数不调用自己不执行,调用方式:函数名()

可重复调用

二.函数传参

1.形参和实参

function getSum(num1,num2) {  //形参
        document.write(num1 + num2)
}
 getSum(10,20)  //实参

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

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

➢ 形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)实参可以理解为是给这个变量赋值

➢ 开发中尽量保持形参和实参个数一致 ➢ 我们曾经使用过的 alert('打印'), parseInt('11'), Number('11') 本质上都是函数调用的传参

2.形参如果不被赋值,就是undefined

 function getSums(a = 0, b = 0) { //实参没有数值或只有一个数值时,形参设置个默认值为0,防止出现NaN,实参若有值,还是以实参为主,无视默认值0
            return sum = a + b
        }
        document.write(getSums(9, 10))

三.函数的返回值

1.return返回数据

注意点:

➢return在当前函数内只能出现一次,return(会立即结束当前函数)后面的代码不再执行

➢ return后面不接数据或者函数内不写return,函数的返回值是undefined

例子:

 function getSum(num1, num2) {
            return num1 + num2
        }
        let res = getSum(10, 20)
        console.log(res);

2.return返回多个值

//封装一个计算两个数字的和和差的函数
 function getSum(a, b) {
            let he = a + b
            let cha = a - b
            return [he, cha]
        }
        let res = getSum(1, 3)
        console.log(`和为${res[0]}`);
        console.log(`差为${res[1]}`);

四.作用域(就近原则):限定了名字的可用性范围就在这个名字的作用域,减少了声明变量名字冲突的bug

1.全局作用域:全局有效

2.局部作用域:局部有效

3.块级作用域:{}内有效,if语句和for循环语句里面的{}等等

注意点:如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

特殊情况: 函数内部的形参可以看做是局部变量

 function fn(x, y) {
            // x 和 y 可以看做是 局部变量
            document.write(x + y)
        }
        fn(1, 2)

五.立即执行函数

  // 立即执行函数,作用:避免重复声明变量名导致代码bug
        (function () {  //因为是立即执行函数,所以()前面不需要再写函数名了
            let a = '张翠花'
            console.log(a);
        }
        )();

        (function () {
            let a = '李狗蛋'
            console.log(a);
        }
        )();

六.伪数组:arguments

特点:伪数组无法使用一些数组的方法,如pop、push... 但length属性还是有的

例子:数组求和案例

 function getSum() {
            let sum = 0
            for (let i = 0; i < arguments.length; i++) {
                sum += arguments[i]
            }
            return sum
        }
        let res = getSum(10, 20, 30) //这里不要中括号
        document.write(res)