自从不知道在哪里看见ES6推荐无分号后,我也就丢弃掉了分号,一直顺风顺水。直到...
自执行函数
作用: 隔离作用域(1. 变量隔离; 2. 避免闭包和作用域链带来的副作用,闭包只能取得包含函数中的变量的最后一个值--高级程序设计7.2.1章;)
写法:
// 写法一
(function () {
...
} ())
// 写法二
(function () {
...
}) ()
之所以网上蛮多人推荐写法一,是因为a = function() {...},调用时是a()而非(a)()。其实无所谓啦,我反而觉得写法二更容易理解~
报错 & 解决
报错: xxx is not a function...
报错信息
原因: 由于(自执行函数的)前一个表达式未写分号结束,js在执行时会认为自执行函数(最外层)的括号是在执行一个函数$(function...)()
,而自执行函数括号的内部是这个函数的参数,故导致报错。
解决: 如果你也习惯了js不书写分号,那么请一定在使用自执行函数时在函数开头添加一个分号。
网友评论