1、 函数声明和函数表达式有什么区别
函数声明: function functionName( ){ }
函数表达式: var fn = function( ){ }
函数声明会提前,函数表达式可以省略标识符(函数名)。
2、 什么是变量的声明前置?什么是函数的声明前置
所谓的变量声明前置就是在一个作用域块中,所有的变量都放在块的开始处声明。和变量声明前置一样,执行代码之前会先读取函数声明,只要函数在代码中进行了声明,无论它在哪个位置上进行声明,js引擎都会将它的声明放在范围作用域的顶部。
3、 arguments是什么
arguments是一个类数组对象,代表传给一个function的参数列表。
arguments对象是函数内部的本地变量;arguments已经不再是函数的属性了。可以在函数内部通过使用arguments对象获取函数的所有参数。这个对象为传递给函数的每个参数建立一个条目,条目的索引号从0开始。它包括了函数说要调用的参数。object对象、类数组。
4、 函数的“重载”怎样实现
在JS中,没有重载,同名函数会覆盖,但可以在函数体针对不同的参数调用执行相应的逻辑。
5、 立即执行函数表达式是什么?有什么作用?
作用:隔离作用域。
因为JavaSript有很多致命缺陷,以至于各类人才开发出各种技巧来弥补JavaScript设计和历史遗留问题。
比如JavaScript中没有命名空间,而且只有function代码块内部可以隔离变量作用域,自调匿名函数就用来防止变量弥散到全局,以免各种js库冲突。