概述
函数三要素包括:**函数名、参数、返回值
函数声明
function 函数名() {
// 函数体
}
函数调用
函数名
函数名()
eg
<script >
function sayHello(){
console.log("hello js")
}
sayHello()
</script>
参数
形式参数 : 在函数声明时, 设置的参数。作用:占位置 ,只能在函数内部使用.
实际参数 : 在函数调用时,传入的参数。 作用 : 函数调用时,会把实参的值赋值给形参, 这样形参就有了值, 在函数体里,,,可以直接使用形参!
//带参数的函数声明
function 函数名(形参1, 形参2, 形参...){
//函数体
}
//带参数的函数调用
函数名(实参1, 实参2, 实参3);
计算2个数的和
<script >
function sum(n1,n2){
console.log(n1 + n2)
}
sum(10,3)
</script>
返回值
函数返回值注意事项:
- return后面的语句不执行。
- 函数可以没有返回值,函数如果没有return,那么返回结果是undefined。
- 函数的参数可以有多个,但是返回值只能有1个。
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
//函数体
return 返回值;
}
//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);
计算2个数结果返回
<script >
function sum(n1,n2){
return n1 + n2
}
var r= sum(10,13)
console.log(r)
</script>
匿名函数
匿名函数:没有名字的函数
将匿名函数赋值给一个变量,这样就可以通过变量进行调用
var 函数名 = function(){
//函数体
}
<script >
var sum = function (n1,n2){
return n1 + n2
}
console.log(sum(3,13))
</script>
自执行(匿名函数自执行1次):第一个括号:匿名函数保护起来,第二个小括号:调用
( 匿名函数)()
(function () {
console.log("自执行函数")
})();
需要注意匿名函数的分号
<script >
var a = 10;
var b = 20;
b = a;
(function () {
console.log(b);
})();
</script>
作用域
变量起作用的区域
全局作用域
:在script标签内,函数外的区域就是全局作用域,在全局作用内声明的变量叫做全局变量 。全局变量可以在任意地方访问。
函数作用域
:在 函数内的区域 叫做函数作用域,在函数作用域内声明的变量叫做局部变量 ,局部变量只有在当前函数内才能访问到。
全局变量:在函数外,script标签内声明的变量就是全局变量,全局变量在任何地方都能访问的到。
局部变量:在函数中声明的变量,就是局部变量,局部变量只有在当前函数体内能够访问。
隐式全局变量:没有使用var
定义的变量也是全局变量,叫做隐式全局变量。
预解析
js执行代码分为两个过程:
- 预解析过程(变量与函数提升)
- 代码一行一行执行
console.log(num);
var num = 1
console.log(num)
预解析过程
- 把var声明的变量提升到当前作用域最前面,不会提升赋值。
- 把函数声明提升到当前作用域的最前面。
- 如果函数同名 , 后者会覆盖前者 。
- 如果var声明的和函数声明的同名, 函数优先。