JS函数相关知识点

吐槽君 分类:javascript

函数相关知识点

1.arguments
  • arguments对象是一个类组对象,因此可以使用中括号语法访问其中的元素(第一个参数是arguments[0],第二个参数是argument[1])。因此要确定传进来多少个参数,可以访问arguments.length属性.
  • es的函数参数只是为了方便才写出来的,并不是必须写出来的。
2.箭头函数
  • 箭头函数虽然语法简洁,但是很多场合不能使用。不能使用arguments、super和new.target,也不能用作构造函数。此外箭头函数也没有prototype属性。
3.没有重载
  • es函数没有签名,因为参数室由包含零个或多个值的数组表示的。没有函数签名,自然也就没有重载了。
4.默认参数值
function makeKing(name = 'Henry') {
    return `King ${name} VIII`;
}
console.log(makeKing('Louis'));//King Louis VIII
console.log(makeKing());//King Henry VIII
 
  • 在使用默认参数时,arguments对象的值不反映参数的默认值,只反映传给函数的参数。当然,跟es5严格模式一样,修改命名参数也不会影响arguments对象,它始终以调用函数时传入的值为准:
function makeKing(name = 'Henry') {
    name = 'Louis'
    return `King ${arguments[0]}`;
}

console.log(makeKing('Louis')); //King Louis
console.log(makeKing()); //King undefined
 
5.函数声明和函数表达式
  • 在执行代码时,JavaScripty引擎会执行一遍扫描,把发现的函数声明提升到源代码树的顶部。因此即使函数定义出现在调用它们的代码之后,引擎也会把函数声明提升到顶部。如果把前面代码中的函数声明改为等价的函数表达式,那么执行的时候就会出错
// 函数声明没问题
console.log(sum(10, 10));

function sum(num1, num2) {
    return num1 + num2;
}

// 函数表达式会报错
console.log(sum(10, 10));
let sum = function(num1, num2) {
    return num1 + num2;
};
 

闭包

  • 闭包指的是那些引用了另一个函数作用域中的变量的函数,通常在嵌套函数中实现。

回复

我来回复
  • 暂无回复内容