12、函数
- 函数名相同时后面的函数覆盖前面的函数;
- 在JS中实参的个数和形参的个数可以不一致;
- 如果形参过多,会自动填上undefined;
- 如果实参过多,多余的实参会被忽略;
- 函数遇到return就不向下执行,函数的结束用return。
1.1 函数的声明与调用
<script>
function writeText() {
document.write("示例文字")
}
writeText()
</script>
1.2 函数的使用
命名规范:
- 和变量命名基本一致;
- 尽量使用小驼峰命名;
- 前缀为动词。
1.3 函数的传参
- 在函数体中使用return关键字能将内部的结果交给函数外部使用;
- return后面的代码不会被执行,并立刻结束当前函数;
- 函数没有return默认返回值为undefined。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>函数的传参</title>
</head>
<body>
<script>
function getSum(num) {
let sum = 0
for (let i = 0; i <= num; i++) {
sum += i
}
return sum
}
document.write(getSum(100))
</script>
</body>
</html>
1.4 作用域
一段程序代码所用到的名字不总是有效和可用的,限定名字的可用代码范围就是这个名字的作用域,作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少的名字的冲突。
<script>
let num = 10 // 全局变量
console.log(num)
function fn() {
let i = 0; //局部变量
console.log(num)
}
fn()
console.log(i) // 报未定义的错误
</script>
1.5 函数表达式
<script>
// 1、函数表达式,必须先声明函数表达式,后调用
let a = function (x) {
console.log(x)
}
a(2)
// 2、具名函数,可以写到任何位置进行调用
b(0)
function b(y) {
console.log(y)
}
// 3、立即执行函数,避免全局变量之间的污染,后面必须加分号
(function () { console.log(2) })(); // (function(){})()
(function () { console.log(4) }()); // (function(){}())
</script>
1.6 逻辑中断
<script>
let num = 1
console.log(1 && 2) // 都是真,返回最后一个真值
console.log(1 || 2) // 都是真,输出第一个真值
console.log(false && 3) // 左边为false中断
console.log(true || 4) // 左边为真值中断操作
console.log(false && num++) // 不执行,一假则假
function addSum(x, y) {
x = x || 0
y = y || 0
console.log(10 + 20) // 解决相加值为未定义的问题
}
addSum()
</script>