0%

在群里有人发了个搞笑图片,图片上包含这两个题目

1
2
[] + {} /* [object Object] */
{} + [] /* 0/

好像记得为什么这么输出原因,自己推又忘了原因(第2个有点看不懂了),于是决定查找资料,复习一下JavaScript的类型转换

阅读全文 »

在面向对象的语言中,继承作为面向对象的三个属性,在ES5中却没有直接比较好的实现方式,虽然红宝书看过了,对书中提到的继承方法津津有味,但面试中要求手写才发现很多都写错了,现场分析脑子一片混乱,也不怕丑我把我错误的代码也晒出来,好好反思,其中也包括Object.create()方法的手写方法,吃一堑涨一智

阅读全文 »

Git是目前世界上最先进的分布式版本控制系统,方便我们管理代码的版本,详细的介绍可以参考廖雪峰的Git教程,本文总结常见的Git命令,想要熟悉这些命令,可以通过 Learning Git Branching这个网站,这是一个有趣的教程,在沙盒里执行相应的Git命令,还能看到每个Git命令的执行情况,像玩有些一样通过一系列的关卡,逐步学习 Git 的强大功能。最后增加了一个大大整理的教程,让人觉得git如此有趣。

一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。

img

几个专用名词的译名如下。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库
阅读全文 »

在代码开发过程中,我们常常使用数组的一些 原生api进行操作,大大方便了我们的操作。其中包含 forEachfilterfindfindIndexmapsomeeveryreduce等函数方法,我们能不能自己写出这些方法。为了统一代码,我在前面增加了参数说明,看了说明之后代码可谓一目了然

阅读全文 »

懒加载等到用户滚动页面,当图片滚动到视区时才发出对应的网络请求,达到节省带宽的目的,使得网页加载更快。其实懒加载有很常规的实现方案,先通过data-src存放真正需要显示的图片路径,而img自带的src放一张占位图片。监听鼠标滚动事件,通过 el.getBoundingClientRect() 获取到当前元素与视口的位置关系,确定图片是否加载。在加载完成之后为了性能考虑,删除 data-src ,这样就可以避免重复的图片加载,其中要注意 getBoundingClientRect 会触发浏览器的回流。IntersectionObserver是个还在草案中的API,不过大部分浏览器均已实现(除了我大IE),适用该API也能实现上述的懒加载功能。

阅读全文 »

js又双叒叕更新了!这一版的新功能看上去真不戳,总共详细介绍了5 个新特性,replaceAll()真方便,可以不要每次都利用正则表达式里的g后缀来做替换了,剑指的替换空格又有了新的替换方法,赞美一下。Chrome浏览器已经支持了,力扣用过了也能顺利通过,剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成”%20”。

示例 1:

1
2
输入:s = "We are happy."
输出:"We%20are%20happy."

限制:

1
0 <= s 的长度 <= 10000

采用replaceAll

1
2
3
4
5
6
7
8
/**
* @param {string} s
* @return {string}
* 库函数
*/
var replaceSpace = function(s) {
return s.replaceAll(' ', '%20');
};
阅读全文 »

关于ES5和ES6的书也好、博客也好,都有很多了,在最近读了ES12的新功能并总结之后,何不来归纳总结一下ES7-ES11的呢,其中有一些已经成为我们日常使用的常用方案了,比如ES8的async/await方法,即使不常用,总结一下也方便查询,不多说了,赶紧进入正题,标注重点关注的,我会牢牢记住,并使用

阅读全文 »

这个部分这个部分用来介绍操作系统,目前这一块知识是我的盲区,需要掌握这些基础知识,不仅仅是应付面试,为以后全栈学习打好基础。

阅读全文 »

这个部分用来介绍操作系统,作为非科班同学,这一块应该好好学习,不仅仅是应付面试,之前就突击了线程、进程、死锁的知识,别的就是一窍不通了,这次尽可能了解完整的操作系统知识体系。一个简单的例子:

  • 在我们的JS代码里,只需要输入 console.log(1 + 1); 就可以在浏览器面板中看到2,这其中发生了什么事情呢?
  • 首先键盘输入代码1 + 1到显示器输出2, 需要CPU控制键盘(输入设备),将获取的1 + 1指令放入内存
  • 然后CPU的控制器从内存中取出指令,并分析出指令是让计算机做一个1 + 1的加法运算
  • 此时CPU的控制将控制CPU的运算器做1 + 1的加法运算,并得出结果2
  • 最后CPU控制器控制运算器将结果返给内存,内存也在CPU控制器的控制下,将结果2返回给屏幕(输出设备)

好了,这里问题是,如果没有操作系统,一个简单的1+1运算,你的js代码还需要考虑这些硬件的协调工作,比如你的代码要协调CPU资源什么时候读取你的代码,什么时候把进程切换到别的进程。。。这些脏活累活都是操作系统帮你屏蔽了,要不这代码可咋写啊。。。

阅读全文 »

js面试种有一个很经典的问题0.1 + 0.2≠0.3 的,该方法涉及浮点数的表示方法,以及浮点数的加减乘除运算的方法,本文力图在介绍这个问题的基础上解决这个问题,当然,别的语言的双精度浮点数也适用这一方法。

阅读全文 »