JS基础day03-函数上
程序员文章站
2024-03-17 16:34:46
...
JS基础day03-函数上
函数定义
- 定义阶段就是我们把代码 放在盒子里面
- 我们就要学习怎么 放进去,也就是书写一个函数
- 我们有两种定义方式 声明式 和 赋值式
声明式
直接用function关键字声明
function fn() {
// 一段代码
}
赋值式
首先用var定义一个变量,然后将函数当做值赋值给这个变量
var fn = function () {
// 一段代码
}
函数调用
调用上的区别
- 虽然两种定义方式的调用都是一样的,但是还是有一些区别的
- 声明式函数: 调用可以在 定义之前或者定义之后
// 可以调用
fn()
// 声明式函数
function fn() {
console.log('我是 fn 函数')
}
// 可以调用
fn()
- 赋值式函数: 调用只能在 定义之前
// 会报错
fn()
// 赋值式函数
var fn = function () {
console.log('我是 fn 函数')
}
// 可以调用
fn()
函数的参数(重点)
- 参数分为两种 行参 和 实参,以声明式函数为例
// 声明式
function fn(行参写在这里) {
// 一段代码
}
fn(实参写在这里)
行参和实参的作用
行参
- 就是在函数内部可以使用的变量,在函数外部不能使用
- 每写一个单词,就相当于在函数内部定义了一个可以使用的变量(遵循变量名的命名规则和命名规范)
- 多个单词之间以 逗号 , 分隔
- 形参与实参是从左到右一一对应的,对应不到的形参为undefined;或者多传递的实参不能使用
// 书写两个参数
function fun(num1, num2) {
// 在函数内部就可以使用 num1 和 num2 这两个变量
}
//实参数量多于形参
fun(num_1,num_2,num_3)
function fun(num1, num2) {
// num1=num_1,num2=num_2;
}
//形参数量多于实参
fun(num_1,num_2,num_3)
function fun(num1, num2) {
// num1=num_1,num2=num_2;num3=undefined;
}
预解析
- js 是一个解释型语言,就是在代码执行之前,先对代码进行通读和解释,然后在执行代码
- 也就是说,我们的 js 代码在运行的时候,会经历两个环节 解释代码 和 执行代码
解释代码
- 因为是在所有代码执行之前进行解释,所以叫做 预解析(预解释)
- 需要解释的内容有两个
-声明式函数
-var 关键字
简单来说就是,所有的function和var关键字声明的函数和变量,会被提到当前整个代码的最前端
//正常代码书写
<script>
document.write('hello world');
document.write(a);
document.write(b);//由于没有声明b变量,所以这行代码会报错,但是为什么打印a也不会报错呢?而且更奇怪的是,a的值为什么不为10?
var a = 10;
fun();
function fun(){
document.write('我是一个函数');
}
</script>
//预解析后可以变形为
<script>
var a;
function fun(){
document.write('我是一个函数');
}
document.write('hello world');
document.write(a);//因为预解析,所以打印a不会报错,但是赋值并不会提前,所以打印出来的a的值为undefined
document.write(b);//由于没有声明b变量,所以这行代码会报错
a = 10;
fun();
</script>
- 预解析就可以解释为什么声明式函数可以在声明之前调用,赋值式函数不能的原因,而且声明式函数的预解析是包括代码块一起的。
- 值得注意的是,var的预解析是在function关键字之前的
上一篇: (十四)函数参数和返回值
推荐阅读