为什么需要函数?
函数:function,是被设计为执行特定任务的代码块
说明:函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用。
1、可以实现代码复用,提高开发效率
2、function执行特定任务的代码块
3、封装程序功能
1、函数使用
语法:
function 函数名() {
函数体
// 函数体是函数的构成部分,它负责将相同或相似代码“包裹”起来,直到函数调用时函数体内的代码才会被执行。函数的功能代码都要写在函数体当中。
}
// 函数需要调用才会执行
函数名()
function sayHi() {
docment.write('hai~')
}
satHi()
命名规范:
和变量命名基本一致 尽量小驼峰式命名法 前缀应该为动词 命名建议:常用动词约定
2、函数传参
语法:
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数) 实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参和实参一一对应
如果实参个数多余形参,多余的实参无效。
如果形参个数多余实参,多余的形参值为undefined
function 函数名(参数1,参数2,...,参数n) {
函数体
}
function getSum(num1,num2) { // 形参接收实参的值
document.write(num1 + num2); // 使用形参
}
getSum(100,200); // 传入实参
形参可以理解为是在这个函数内声明的变量(比如 num1 = 100)实参可以理解为是给这个变量赋值
3、函数返回值
返回值函数的概念: 当调用某个函数,这个函数会返回一个结果出来 这就是有返回值的函数
使用函数返回值:
function getMax() {
// 100 就是 函数在执行完毕的时候 会返回的数据
return 100;
}
let num1 = getMax(); // num1 =100
console.log(num1); // 100
细节:
1.函数体中使用 return 关键字能将内部的执行结果交给函数外部使用 2.函数内部只能运行到 1 次 return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写 return会立即结束当前函数 3.函数可以没有 return,这种情况函数默认返回值为 undefined
4、作用域
全局作用域
作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件
局部作用域
作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域
块级作用域
块作用域由 { } 包括,if语句和for语句里面的{ }等
作用域链
访问原则:采取就近原则的方式来查找变量最终的值
只要是代码,就至少有一个作用域 写在函数内部的局部作用域 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链
5、匿名函数(了解)
语法:
let fn = function () {
// 函数体
}
fn() // 函数名()
6、立即执行函数(暂了解)
语法:
// 方式1
(
function () {
console.log(11);
}
)();
// 方式2
(
function () {
console.log(11);
}()
);
注意:
无需调用,立即执行,其实本质已经调用了 多个立即执行函数之间用分号隔开
作用:
防止变量污染