函数参数类型与返回值
在函数定义时的参数叫做形式参数,简称形参;在调用函数时使用的参数叫做实际参数,简称实参。一般情况下,实参与形参的个数是相同的。但是,也存在实参与形参个数不同的情况。
1、实参比形参少或者说不足:设默认值
以实参比形参少的时候,可以给形参设默认值,且默认值是设在最右边参数。
//实参与形参相等
function hello(name){
return 'Hello' + name;
}
console.log(hello('早上好'));
// 实参比形参少或者说不足时:设默认值
function hello(name = '您好!'){
return 'Hello' + name;
}
console.log(hello());
2、实参比形参多:将多余的实参全部压入到一个数组中保存
function hello1(...users) {
return users;
}
const arr = ['早上好', '中午好', '下午好'];
console.log(hello1(...arr));
console.log(hello1(.. ['早上好', '中午好', '下午好']));
模板字面量与模板函数的声明
模板字面量是创建字符串的新字面量语法,使用反引号来分界。
1.模板字面量
console.log(`hello ${username}`);
console.log(`20 + 30 = ${20 + 30}`);
let fs= 70;
console.log(`${fs >= 60 ? `合格` : `不合格`}`);
2.模板函数/标签函数
模板函数的声明与普通函数是一样,只不过调用时,使用”模板字面量”做为参数
function total(参数1, 参数2)
参数1: 必须是当前模板字面量参数中的字符串字面量组成的数组
参数2: 第二个参数必须是一个或多个模板字面量中插值列表
function total(strings, ...args) {
console.log(strings);
console.log(args);
}
let name = '电脑';
let num = 2;
let price = 3500;
total`名称: ${name}, 数量:${num},单价:${price}`;
闭包的形成条件与访问方法
闭包就是能够读取其他函数内部变量的函数。在js中,可以将闭包理解成“函数中的函数“。
闭包函数内部可用的三种变量:
1.参数变量: 函数参数列表中声明
2.私有变量: 函数内部声明
3.自由变量: 函数外部声明
闭包的特点:
1、延长了变量的生命周期。优点:执行空间不销毁,变量也没有销毁,缺点:变量一直在内存中
2、可以访问函数内部的私有变量。优点:可以利用闭包函数,访问函数内部的私有变量,缺点:变量一直在内存中
3、保护私有变量。优点:保护私有变量不会被外界访问,缺点:如果要访问,就必须要使用闭包函数
let d = 40;
let fn = function (a, b) {
let c = 30;
return a + b + c + d;
};
console.log(fn(10, 20));
fn = function (a) {
let f = function (b) {
return a + b;
};
return f;
};
let f1 = fn(10);
console.log(typeof f1);
console.log(f1(20));
fn = function (a, b, c) {
return a + b + c;
};
console.log(fn(1, 2, 3));
fn = function (a) {
return function (b) {
return function (c) {
return a + b + c;
};
};
};
console.log(fn(5)(6)(7));
fn = function (a) {
return function (b, c) {
return a + b + c;
};
};
console.log(fn(30)(20, 40));
fn = a => b => c => a + b + c;
console.log(fn(6)(7)(8));
let dis = 0.5;
function getPrice(price, dis) {
return price * dis;
}
console.log(getPrice(100, dis));