今日补充
调试工具:1、进入函数体 2、跳出函数体
三元表达式,一定会返回值,双分支
函数
一、为什么要函数?
函数:function,是被设计为执行任务的代码块
说明:精简代码、方便复用
思想:封装
函数体就是代码块
二、函数使用
1、函数的声明语法
function 函数名 (){
...
}
2、函数的调用
函数名();
说明:可以多次调用、以及任意时刻调用(前提是声明好了)
3、扩展:
(1)函数声明的时机:是在js刚进入执行环境的时候(函数声明会提前--提到最前面),声明时机不是运行到这一行了才声明,不像我们的let变量一样
(2)所以调用函数写在声明函数的前面也可以
4、函数名命名规范
(1)和变量命名基本一致
(2)尽量使用小驼峰命名法
(3)前缀应该是为动词
(4)命名建议:常用动词约定
can(可不可以)、has(有没有)、is(是不是)、get(获取)、set(设置)、load(加载)等
5、封装步骤
(1)分析有没有相同代码
(2)抽取相同代码,并给一个名字
(3) 使用这个名字 == 执行了这段代码
6、区别
循环重复代码:写完就执行
函数的复用代码:调用即执行,且可重复
三、函数传参
提高函数的灵活性
1、声明语法:function 函数名(参数1,参数2...,参数n)
调用: 函数名(1,2...,n);
可以带多个参数
2、形参和实参
(1)形参:声明函数的时候函数名旁边小括号里面的叫形参
实参:调用函数的时候函数名旁边小括号里面的叫实参
形参与实参尽量统一(数量、顺序、类型)
(2)形参相当于声明、实参相当于赋值
逻辑中断: 逻辑或的技巧: 取默认值
- 当 y 没传实参时, 默认值为 undefined
- undefined || 0 ; 前为逻辑假,返回后面的值 0
- 相当于 y = 0 ; 设置了默认值
四、函数返回值
函数内部不需要输出结果,而是返回结果
对执行结果的扩展性更高,可以让其他的程序使用这个结果
1、用return返回值
注意事项:
1、在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用
2、函数内部只能运行到 1 次 return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写
3、return会立即结束当前函数
4、函数可以没有 return,这种情况函数默认返回值为 undefined
五、作用域
作用域:变量可用性的代码范围
1、全局作用域
整个script标签内部or多个js文件
script顶层范围
注意:运行位置,在变量之后,才可以访问(并不是 书写位置))
2、块级作用域
for循环,声明初始值的变量,
样式块级变量,
只要出现大括号就是块级作用域
3、局部作用域
函数形参,是一个局部变量
注:
在块级或者局部未声明变量,直接赋值变量,相当于 创建了一个全局变量4、作用域
作用域链:采取就近原则的方式来查找变量最终的值
六、匿名函数
作用:解决命名冲突(避免全局变量之间的污染)
1、匿名函数
将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式
语法:
调用:
2、立即执行函数
避免全局变量之间的污染;
无需额外调用,立即执行,本质是已经执行了的。
语法:
注意: 多个立即执行函数要用 ; 隔开,要不然会报错