Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

回家路上想起来关于Js一个有趣的东西

$
0
0

最近好像有点没有之前开心,换了公司但是没有以前的活力了,好像记得之前每天上班下班都挺开心的,可能主要是之前的工作氛围真的不错吧,虽然技术真的不咋的。   忽然在下班的地铁上想起来两个JavaScript的小问题,有个还和之前的leader吹过牛,拿出来正好说一下吧。

function fn1(){
    return {
        name: 'javascript'
    };
}

function fn2(){
    return 
    {
        name: 'javascript'
    };
}

var obj1 = fn1();
var obj2 = fn2();

console.log(obj1);
console.log(obj2);

上面两个例子看起来几乎没有什么不同,但是实质上确实不同的,第一个输出会显示object类型的数据,但是第二个却会显示undefined,第一个非常显而易见,那第二个为什么呢,其实JavaScript是不需要分号这个东西的,所以第二个函数其实会被解析成

function fn2(){
    return ;
    {
        name: 'javascript'
    };
}

所以实质上函数返回的是一个undefined。   还有一个挺好玩的例子,例如:

var func = function(){
    return 42;
}
(function(){
    console.log('a');
})();

上面这个例子其实会语法错误,原因就是:上面的语句会解释成,一个函数带一匿名函数作为参数而被调用, 返回42后, 又一次被"调用", 这就导致了错误。所以我想起来之前hax在Jsconf上不用分号的建议是值得商榷的。


Viewing all articles
Browse latest Browse all 14821

Trending Articles