JavaScript的那些琐碎的知识点

@huruji 2018-03-10 12:25:20发表于 huruji/blog 连载中ing

1.Object.create(null)与{}的区别

Object.create(null)创建的对象没有继承任何原型,也就是说他的原型链没有上一层,而{}显然是Object的实例


我们要知道Object.create()方法的第一个参数是新建对象的原型对象呀!!!

Object.create(null)显然比{}的好处就是不用考虑和原型对象的属性重名的问题

Object.create(null)常常会在很多流行的开源项目中出现,我初次见到的时候就开始一脸懵逼了,完全不明白这有啥意义,等我明白之后不得不承认这就是大神呀

2.``~~``的作用

首先``~``的作用是取反,使用两次就是取回原值,但是如果是小数的话,就是取整了,因为``~``取反时面对小数时会先取整,而且``~~``取整是所有取整方法中最快的方法

3.JavaScript对象与JSON的区别

首先JSON是一种独立于语言的文本格式,不是**对象**(敲黑板),通俗点来说是结构化的字符串。JSON.parse的JSON只是一个JavaScript的一个Util对象而已,这个API是用于把存储了 JSON 文本格式的字符串解析为 JavaScript 中的数据结构,在使用上的直观区别主要有以下: ![](https://user-images.githubusercontent.com/15937065/38328188-cbed1e7a-387c-11e8-8c8f-31a6acbb13dc.png)

另外在IE6/7中没有JSON这个JavaScript对象,不过可以使用json2.jsclarinetOboe.js等库。

另外不要忘记查标准、看官网呀,(这怎么越来越像搞科研的了,F**k)。json官网:http://json.org、ECMA404标准(也就是JSON标准):http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf

4. javascript:void 0到底意味着什么

首先请记住一点:void 是一个操作符,且这个操作符返回的是 undefined

经常会在href中看到javascript: void(0) 类似的代码,这段代码直接表现就是禁用了链接点击后跳转的默认功能,浏览器中的行为是遇到javascript:开头的URI,将会将后面的结果替换为href的内容,除非返回的值是 undefined

其实,不仅在浏览器端可以使用,在任何时候我们需要这个 undefined 的时候都可以使用,比如:dayjs判断是否全等于 undefined 就是利用 void 0

const isUndefined = s => s === void 0

参考:

What does “javascript:void(0)” mean?

MDN: void operator

5.javascript中语句和表达式的区别

![image](https://user-images.githubusercontent.com/15937065/40553767-3fa3b466-6076-11e8-8a8f-0ce73ebad2fe.png)

表达式会产生一个值,表达式之间使用逗号连接,语句是一种行为,像循环语句、if语句,语句之间使用分号连接。
image

参考:

[译]JavaScript中:表达式和语句的区别