javascript - 一个奇怪的语法错误
ringa_lee
ringa_lee 2017-04-11 11:58:21
[JavaScript讨论组]

为什么报 Uncaught TypeError: console.log(...) is not a function?而另两种方式可以

var x = {
        fn: function () {
            console.log(this)
//            !function () {
//                console.log(this)
//            }();//正确
            (function () {
                console.log(this);
            })();//Uncaught TypeError: console.log(...) is not a function
        }
    };

    (function () {
        console.log(this);
    })();//正确

    x.fn()
ringa_lee
ringa_lee

ringa_lee

全部回复(6)
伊谢尔伦

因为第三行的 console.log(this) 没有加分号

可以简单的运行以下代码,会报同样的错误:

console.log(1)(2);
// Uncaught TypeError: console.log(...) is not a function
PHP中文网
(function () {
                console.log(this);
            })();

function ()中间的空格去掉和在上面的console 加;

ringa_lee

第三行少了分号,导致。

console.log(this)(function () {
    console.log(this);
})();
怪我咯

你把你的写法压缩了看就很明白了、圆括号的多重含义由于没写分号被误解了

迷茫
var x = {
    fn: function () {
        console.log(this)(function () {
            console.log(this);
        })();
    }
};

x.fn();

分号还是不要省,最佳规范都是前辈们的血泪教训。

天蓬老师

要么不要省略分号
要么写自动执行函数的时候在其前面加!、;、+、-等符号,以标示这是新的一行

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号