JavaScript第六天学习总结
函数
什么是函数
执行特定任务的代码块
函数的作用
可以实现代码复用,提高开发效率
函数的使用
声明语法
function关键字 函数名() { 函数体}
function sayhi() {
console.log("你真好!");
console.log("你真棒!");
}
调用语法
函数名();
sayhi();
函数的参数
声明语法
function关键字 函数名(参数列表) { 函数体}
参数列表
- 传入数据列表
- 声明这个函数需要传入几个数据
- 声明多个数据用逗号隔开
function sum(num1,num2) {
document.write(num1 + num2)
}
调用语法
函数名(传递的参数列表);
sum(10,20);
形参
声明函数时写在函数名右边小括号的参数叫形参(形式上的参数)
function关键字 函数名(形参1,形参2){函数体..}
实参
调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
函数名(实参1,实参2);
注意点
- 开发中尽量保持形参和实参个数一致
- 不能上面形参写(num1,num2) 下面函数体却写(num2,num1)
- 不能只写一个实参,否则会出错因为只设置一个实参,因为只设置一个值另一个没赋值的实参默认为undefined)
函数的返回值
作用
- 函数内部不需要输出结果,而是要返回结果
- 对执行结果的扩展性更高,可以让其他的程序使用这个结果
return关键字
语法
return 数据
function getMax(n1,n2) {
if (n1>n2) {
return n1;
}else{
return n2;
}
}
document.write( getMax(1,3));
注意点
- 在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用
- 函数内部只能运行到 1 次 return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写
- return会立即结束当前函数
- 函数可以没有 return,这种情况函数默认返回值为 undefined
函数的作用域(重点)
原理
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域
作用
提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
全局作用域
- 直接写在script标签里面的代码
- 全局变量 任何地方都可以访问
// 全局变量
let num = 100;
function max() {
// 使用全局变量,任何地方都可以调用
console.log(num);
}
函数作用域-局部作用域
- 写在函数中的变量
- 只能在自己的大括号中使用,不能在它的大括号之外使用的,否则就会报错!!
- 作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。
let msg = 10000; // 全局变量
// 局部变量 函数内部 声明的变量
function getMax() {
// 声明一个数字
let num = 200; // 局部变量
}
// 局部变量 不能在 超出它的大括号来使用
console.log(num); // 会报错
块级作用域
- 块作用域由 { } 包括,if语句和for语句里面的{ }等
- 类似局部变量,也是超出了自身的大括号不能使用
for (let index = 0; index < 2; index++) {
// num 块级变量
let num = 100;
}
console.log(num);// 使用块级变量 出错!!
作用域链
- 是一种代码寻找变量来执行的机制规则
- 遵循就近原则
- 就近的参照物是函数的声明、函数的定义来寻找最近的变量
// 判断当前变量 输出是什么
// 就近原则 判断是要根据 函数的定义 来判断 而不是函数的调用
// 函数的定义 代码位置来判断 100 这个!!
let num = 100;
function func1() {
let num = 200;
// 函数的调用
fun2();
}
// 函数的定义-声明
function fun2() {
console.log(num);
}
func1();
匿名函数
- 函数按照有没有名字分为两种
- 有名字--具体函数
- 没有名字---匿名函数
语法
匿名函数 = function(){}
函数表达式
let func = function(){函数体}
调用
func();
let func2 = function () {
console.log("123");
};
// 调用
func2();
自执行函数
- 自执行函数 = 匿名函数一起出现 通用的功能是 防止变量污染
- 函数在定义的同时 直接就执行了
- 函数包装多段代码 让程序比较简洁
- 多个立即执行函数要用 ; 隔开,要不然会报错
语法
(function(){})();
(function () {
let msg = 123;
// 设置 页面的标题 = 月薪过万
document.title = '月薪过万';
// 设置 页面的背景颜色 = 黄色
document.body.style.backgroundColor = 'yellow';
})();