函数相关知识 1、 严格模式下,函数中arguments修改不了函数参数 function args(a, b) { arguments[0] = 2 arguments[1] = 3 return a + b } args(1, 1) // 5 function argStrict(a, b) { 'use strict'; arguments[0] = 2 arguments[1] = 3 return a + b } argStrict(1, 1) // 2 2、将函数参数维数组arguments转真实数组 (1)Array.prototype.slice.call(arguments) 或者 Array.prototype.apply.call(arguments) (2)Array.from(arguments) (3)[...arguments] (4)循环处理得到新数组 3、callee、caller (1)callee, arguments.callee返回arguments对应的原函数 (2)caller,fun.caller返回调用fun函数的对象 4、函数的自调用的几种写法 (1)(function () {})() (2)(function () {}()) (3)var f = function (){}() (4)true && function() {}() (5)!function () {}()、 ~function () {}()、 -function () {}()、 +function () {}() // 总结:不能直接function在行首,否则js引擎会把function理解为一个函数定义而不是一个表达式。 // 优点:1、不需要函数命名 2、创建一个单独作用域,避免污染全局变量