8.函数
(1)声明和调用
声明语法:
function 函数名() {
函数体
}
调用语法:
函数名()
function sayHi() {
console.log('hi~~~')
}
sayHi()
备注:
1.函数只声明不调用则不起作用。
2.函数名的前缀一般为动词:can、has、is、get、set、load
(2)函数传参
语法:
function 函数名(参数列表) {
函数体
}
调用:
函数名(传递的参数列表)
function sayHi(name) {
//参数 name 可以被理解成是一个变量
console.log(name)
}
// 这时相当于为参数 name 赋值了
sayHi('小明')// 结果为 小明
function getSum(num1, num2) { //num1和num2为形参:形式上的参数
document.write(num1+num2)
}
getSum(1, 50) // 调用的小括号里面的1和50为实参:实际的参数
//可以给一个形参默认值,这样如果不给实参也不会出现underfined+underfined=NaN的情况。
function getSum(x = 0, y = 0) {
document.write(x + y)
}
getSum() // 0
(3)函数返回值
通过 return这个关键字,将内部执行结果传递到函数外部,这个被传递到外部的结果就是返回值。
语法:return 数据
function fn() {
return 20
}
// fn()为调用者 相当于执行了fn() = 20
// return的值返回给调用者
// console.log(fn())
let re = fn()
console.log(re)
function getTotalPrice(x, y) {
return x + y
// return 后面的代码不会被执行
}
let sum = getTotalPrice(1, 2)
console.log(sum)
//求任意数组的最大值,并且返回
function getArrValue(arr = []) {
//先准备一个max变量存放数组的第一个值
let max = arr[0]
for (let i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i]
}
}
return max
}
let max = getArrValue([1, 3, 5, 7, 9])
console.log(max)
备注:返回值返回给函数调用者。
(4)函数细节
1.两个相同的函数后面的会覆盖前面的函数。
2.实参个数可以与形参不一样。若形参过多,自动填上underfined
,若实参过多,则多余的实参被忽略。
(5)匿名函数
1.函数表达式
// 声明
let fn = function() {
console.log('函数表达式')
}
// 调用
fn()
备注:函数表达式和具名函数的不同:
1.具名函数的调用可以写到任何位置,匿名函数不行。
2.函数表达式,必须先声明函数表达式,后调用。
2.立即执行函数
1.(function(){xxx})();
(function (x, y) {
console.log(x + y)
})(1, 2);
2.(function(){xxxx}());
(function (x, y) {
console.log(x + y)
}(1, 3));
备注:
1.无需调用,立即执行,其实本质已经调用了。
2.多个立即执行函数之间用分号隔开
(6)逻辑中断
在&&中,如果左边为false则右边不再执行;在||中,如果左边为true则右边不再执行。
let age = 18
console.log(false && age++) // age++ 不执行 一假则假
console.log(true || age++)// age++ 不执行 一真则真
console.log(11 && 22) // 都是真,这返回最后一个真值
console.log(11 || 22) // 输出第一个真值
(7)转换为Boolean型
显示转换:’ '、0、underfined、null、false、NaN都为false,其余都是true。
console.log(Boolean(''/0/underfined/null/NaN)) //false
//不打印
if (''/0/underfined/null/NaN) {
console.log(11)
}
隐式转换:
1.有字符串的加法’ '+1结果为1。
2.减法会使’ '转换为0。
3.null数字转换后为0。
4.underfined数字转换后为NaN。
console.log(''-1) //-1
console.log('pink'-1) //NaN
console.log(null+1) //1
console.log(underfined+1) //NaN
console.log(NaN+1) //NaN