函数是js里的一级公民。
创建一个函数之后,这个函数就拥有了一个函数作用域。正常来写,可以是,写了一个函数名,然后再写相关的代码。也可以反过来思考,截取了一部分的代码块,把它们放在一个函数里。这样就隐藏了实现的细节,还可以实现变量和方法的私有化。这个是最小特权的设计思想。函数分为匿名函数和具名函数。为了避免全局污染,或产生多余的函数名,可以使用立即执行函数,英文简称IIFE。
在ES6之前,JS里面是没有块作用域的,参考其他语言,块作用域定义变量的地方,JavaScript都默认定义成了全局变量,所以很明显,这会导致很多隐藏的问题。不过在ES6中,添加了let和const变量声明。const和let都可以用来声明块级变量,不同的是,const声明的静态变量或者指针地址是不可变的。
网友评论