美文网首页Web前端之路让前端飞
自执行函数报错(xx is not a function)问题

自执行函数报错(xx is not a function)问题

作者: 歇歇 | 来源:发表于2018-01-25 11:38 被阅读22次

    自从不知道在哪里看见ES6推荐无分号后,我也就丢弃掉了分号,一直顺风顺水。直到...

    自执行函数

    作用: 隔离作用域(1. 变量隔离; 2. 避免闭包和作用域链带来的副作用,闭包只能取得包含函数中的变量的最后一个值--高级程序设计7.2.1章;)
    写法:

    // 写法一
    (function () {
    ...
    } ())
    
    // 写法二
    (function () {
    ...
    }) ()
    

    之所以网上蛮多人推荐写法一,是因为a = function() {...},调用时是a()而非(a)()。其实无所谓啦,我反而觉得写法二更容易理解~

    报错 & 解决

    报错: xxx is not a function...

    报错前写法
    报错信息

    原因: 由于(自执行函数的)前一个表达式未写分号结束,js在执行时会认为自执行函数(最外层)的括号是在执行一个函数$(function...)(),而自执行函数括号的内部是这个函数的参数,故导致报错。

    解决: 如果你也习惯了js不书写分号,那么请一定在使用自执行函数时在函数开头添加一个分号。

    像这样

    相关文章

      网友评论

        本文标题:自执行函数报错(xx is not a function)问题

        本文链接:https://www.haomeiwen.com/subject/bdamaxtx.html