博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回家路上想起来关于Js一个有趣的东西
阅读量:6180 次
发布时间:2019-06-21

本文共 1017 字,大约阅读时间需要 3 分钟。

  最近好像有点没有之前开心,换了公司但是没有以前的活力了,好像记得之前每天上班下班都挺开心的,可能主要是之前的工作氛围真的不错吧,虽然技术真的不咋的。忽然在下班的地铁上想起来两个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上不用分号的建议是值得商榷的。

  最后附上最近看到的一个JavaScript的小知识,众所周时JavaScript的基本数据类型有五种:string,number,null,undefined,boolean,那么为什么

typeof null

显示的是object类型,这属于浏览器的对语言层面的一个BUG,原因在于Object在底层数据存储是以二进制格式存储的,浏览器以前三个二进制位进行判断,如果前三个二进制位都是000的话会被判断为属于Object类型,问题在于null底层存储是全为0,所以会被检测为Object类型。

欢迎大家到我的个人博客看看, ?

转载地址:http://qndda.baihongyu.com/

你可能感兴趣的文章
Thrift第二课 Linux编译
查看>>
linux下自动部署DNS脚本
查看>>
三、Shell中分支与循环结构
查看>>
字体【truetype postscript opentype】
查看>>
nginx的502问题
查看>>
IF 比较操作表达
查看>>
16、产品经理指南 - 软件项目角色指南系列文章
查看>>
ZRANGEBYLEX key min max [LIMIT offset count]
查看>>
普通用户免输密码切换root
查看>>
MySQL to Hbase 数据的抽取
查看>>
【AIX】AIX 开机自动挂载NFS共享
查看>>
对PS1的理解
查看>>
IO学习总结一
查看>>
CentOS 6.4下PXE+Kickstart无人值守安装操作系统
查看>>
glusterfs——volume管理
查看>>
[译] 认证 vs 授权
查看>>
Linux的磁盘格式化,磁盘挂载,手动增加swap空间
查看>>
更改SharePoint的服务器名称
查看>>
Java泛型应用浅析
查看>>
CCNA课堂练习:nat的介绍及利用nat来实现地址转换
查看>>