深入理解JavaScript IIFE:函数声明、表达式与特性

0 下载量 80 浏览量 更新于2024-09-02 收藏 59KB PDF 举报
在JavaScript中,函数是一种基本的编程构建块,用于封装执行特定任务的一段代码。本文将深入探讨JavaScript函数的两种常见定义方式:函数声明和函数表达式,以及它们的区别。此外,我们还将关注函数的重要特性,如默认参数、参数的暂时性死区和不定参数。 函数声明: 函数声明使用`function`关键字来定义,如`function fun1(name, age) { console.log(name + ',' + age); }`。函数声明会被提升到其所在作用域的顶部,因此可以被提前调用。在上面的例子中,`fun1`函数可以被`fun1('Amy', 18)`正确调用。 函数表达式: 另一种定义函数的方式是使用变量来包裹函数,即`var fun2 = function(name, age) { console.log(name + ',' + age); }`。这种方式创建的函数没有预声明,只有当它被赋值时才会生效。同样,它可以被后续调用。 默认参数: JavaScript允许为函数参数设置默认值,例如`function fun1(name, age = 17) { console.log(name + ',' + age); }`。如果调用时不提供`age`参数,它将使用默认值17。然而,需要注意的是,参数默认值的计算存在“暂时性死区”,这意味着在函数内部访问未显式传递的默认参数值时,它们可能还没有被初始化。 不定参数: 函数不定参数(rest参数)允许接受任意数量的参数,如`function fun4(values) { console.log(values.length); }`。这使得函数能够处理不确定数量的输入,如`fun4(1, 2, 3, 4)`。 Function构造函数: JavaScript还提供了`Function`构造函数,用于动态创建函数。尽管这种做法在某些场景下可能有用,但通常不建议,因为它涉及到两次代码解析,降低了性能。例如: ```javascript var f2 = new Function("n1", "n2", "return n1 + n2;"); console.log(f2(1, 2)); // 3 ``` 函数在JavaScript中扮演着至关重要的角色,它们不仅支持基本的控制流,还是实现模块化和高阶函数(如柯里化和工厂函数)的基础。理解这些概念对于编写高效、可维护的JavaScript代码至关重要。通过熟练掌握函数的使用,开发者能更好地组织代码逻辑,提高代码的可读性和复用性。