携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
1.函数允许参数默认值
直接写在参数定义后面,不传参才会使用默认值,后面使用 “ ”算传参了,前面使用“ ”算没有传参
1.正确实例:
function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
2.参数默认值时,函数不能有同名参数
1.错误实例
参数重名:
function foo(x, x, y = 1) {
// ...报错
}
3.参数默认值已经算定义了,不能不能用let或const再次声明
1.错误实例
s(x,y="1") {
let x=18;
// ...报错
}
4.省略参数
默认值的参数,应该是函数的尾参数(x,y=1),如果不是 调用函数不能省略参数
1.错误实例
默认值没有放在尾部
function f(x = 1, y) {
return [x, y];
}
f() // [1, undefined]
f(2) // [2, undefined])
f(, 1) // 报错
f(undefined, 1) // [1, 1]
5.传入undefined,将触发该参数等于默认值,null则没有这个效果
2.函数的length
函数的参数个数减去指定默认值的参数个数
1.实例:
length属性返回的值
(function (a) {}).length // 1
(function (a = 5) {}).length // 0
(function (a, b, c = 5) {}).length // 2
3.rest参数(...变量名)
用法:(... 变量名)
注意: rest 参数之后不能再有其他参数,否则会报错
(1)函数中使用就是rest参数:将多余的参数变成一个数组
(2)正常使用就是扩展运算:将数组变成遍历出来(常用于数组合并)
1.将多余的参数变成一个数组
function input(...params){
console.log(params)
}
input(1,2,3,4) //[1,2,3,4]
function input2(a,b,...params){
console.log(params)
}
input2(1,2,3,4) //[3,4]
2.错误实例:rest后面有参数
function f(a, ...b, c) {
// 报错
}
4.name属性
用法:f.name()
返回该函数的函数名
1.es5中匿名函数返回“”,es6中返回真实名字
2.Function构造函数返回的name
3.bind返回的函数的name
例子:
1.匿名函数的name
var f = function () {};
// ES5
f.name // ""
// ES6
f.name // "f"
2.Function构造函数返回的函数实例,name属性的值为anonymous
(new Function).name // "anonymous"
3.bind返回的函数,name属性值会加上bound前缀
function foo() {};
foo.bind({}).name // "bound foo"
(function(){}).bind({}).name // "bound "
5.箭头函数
用法:=>定义
1.定义匿名函数
左边没有等号,只有右边有
当参数左右有=时就不是匿名函数
1.例子:
let arr = ["apple", "orange", "ban"];
let a = arr.map(item => {
return item;
});
2.没有参数()
没有参数的时候需要在箭头前加上()
var single = () => {
return "l am a girl";
};
3.一个参数函数
一个参数的时候可以忽略()
var single =a=>a
single('hello“)
4.多个参数
多个参数需要用到小括号,参数间逗号间隔
var add = (a, b) => {
return a - b;
};
console.log(add(8,3))
5.函数体多条语句
函数体多条语句需要用到大括号
var add=(a,b)=>{
if(a<b){
return b-a;
}else {
return a-b;
}
};
console.log(add(3,8));
6.返回对象
返回对象时需要用小括号包起来,因为大括号被占用解释为代码块了
var ob=()=>({
name:'白白',
age:18
})
console.log(ob())
7.与变量解构结合使用
var jie=(a,b)=>a+b;
const full = ({ first, last }) => first + ' ' + last;
8.直接作为事件处理函数
document.addEventListener('click', ev => {
console.log(ev)
console.log(ev)
})