js函数

  1. 箭头函数不能使用 arguments、super 和 new.target,也不能用作构造函数。此外,箭头函数也没有 prototype 属性。
  2. 函数名就是指向函数的指针,所以它们跟其他包含对象指针的变量具有相同的行为。
  3. 使用 function 关键字定义(非箭头)函数时,可以在函数内 部访问 arguments 对象,从中取得传进来的每个参数值。
  4. arguments 对象的另一个有意思的地方就是,它的值始终会与对应的命名参数同步。但这并不意味着它们都 访问同一个内存地址,它们在内存中还是分开的,只不过会保持同步而已
  5. 如果只传了一个参数,然后把 arguments[1]设置为某个值,那么这个值并不会反映到第二个命名参数。这是 因为 arguments 对象的长度是根据传入的参数个数,而非定义函数时给出的命名参数个数确定的。
  6. ECMAScript 中的所有参数都按值传递的。不可能按引用传递参数。如果把对象作 为参数传递,那么传递的值就是这个对象的引用。
  7. ECMAScript 中定义了两个同名函数,则后定义的会覆盖先定义的
  8. arguments 对象的值不反映参数的默认值,只反映传给函数的参数
  9. 非严格模式下,arguments 和参数的值同步修改,除非参数undefined,严格模式下,arguments 和参数的值不会同步,互不影响
  10. 可以把函数作为参数传给另一个函数,而且还可以在一个函数中返回另一个函数
  11. arguments 对象其实还有一个 callee 属性,是一个指向 arguments 对象所在函数的 指针
  12. 箭头函数中的 this 会保留定义该函数时的上下文
  13. caller属性引用的是调用当前函数的函数。通过函数本身调用,可以直接获取使用该函数的函数体代码,如果是window则返回null,亦可使用arguments.callee.caller降低耦合性
  14. 在严格模式下访问 arguments.callee 会报错。ECMAScript 5 也定义了 arguments.caller,但 在严格模式下访问它会报错,在非严格模式下则始终是 undefined。这是为了分清 arguments.caller 和函数的 caller 而故意为之的。
  15. ECMAScript 6 新增了检测函数是否使用 new 关键字调用的 new.target 属性。如果函数是正常调用的, 则 new.target 的值是 undefined;如果是使用 new 关键字调用的,则 new.target 将引用被调用的 构造函数。
  16. 在严格模式下,调用函数时如果没有指定上下文对象,则 this 值不会指向 window。 除非使用 apply()或 call()把函数指定给一个对象,否则 this 的值会变成 undefined。
  17. 闭包指的是那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。
posted @ 2021-04-07 15:13  浪波激泥  阅读(43)  评论(0编辑  收藏  举报