最近在网上看到一篇关于for循环的面试题,可以让自己回顾一下作用域的基础知识。
不多说,题目如下:
下面的代码输出的是什么
1 | for (var i = 0; i < 5; i++) { |
最近在网上看到一篇关于for循环的面试题,可以让自己回顾一下作用域的基础知识。
不多说,题目如下:
下面的代码输出的是什么
1 | for (var i = 0; i < 5; i++) { |
1 | var Animal = function(name) { |
在ES6中,js终于出现了正式的class
关键字,对于js中类的实现和继承,似乎也给出了官方的方向,class
也只是一种语法糖,实际还是使用了js的原型链来实现了类的继承功能。
所以了解原型链继承可以帮助我们更好的理解和学习JS中的类和继承,已经ES6中的class
。
首先我们需要了解原型链是什么意思。
JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain)
首先js中的所有变量几乎都可以被看做对象,然后所有的对象都会有它的原型对象,而对象中有一个[[prototype]]来指向自己的原型对象。
这个设计感觉就像是子类和父类的关系,但是并不是完全相同。
而我们需要做的就是使下面这个等式成立
1 | childobj.[[prototype]] === parentObj |
在学习Javascript的一开始,我们就使用var来创建变量,随着ES6的发布,出现了一个一个新的创建变量的方式let
,随着浏览器和node的快速支持以及babel的出现,我们已经可以正式使用let
。在很多情况下用于比起使用var
,let
会更好,不只是在代码的稳定性还可以增加代码的可读性。
有时候需要将mysql运行在127.0.0.1上来保证只有内网访问,或者需要改到0.0.0.0来实现远程链接
1 | vim /etc/mysql/my.cnf |
arguments
转数组1 | let args = Array.prototype.slice.call(arguments); |
Generator
1 | // 来自于co,这里的判断前提是一个对象,所以传入的参数名是obj |
在docker中安装vsftpd,在启动vsftpd服务的时候,会出现下面的错误
1 | > vsftpd failed - probably invalid config |
查了很多的资料,找到了如下的说明和解决方案
message “vsftpd failed - probably invalid config.” is received during boot.
Yet the server started normally. This message is issued by /etc/init.d/vsftpd.
This message is not issued on every boot, only occasionally.This appears to be a timing problem. The server is started asynchronously
from this script. The script then immediately looks for the PID file; and if
it doesn’t find it issues the above error message. But the server may not yet
have had time to create the PID file.Adding “sleep 1” between
start-stop-daemon –start –background -m –oknodo –pidfile /var/run/vsftpd/vsftpd.pid –exec ${DAEMON}
and
_PID=”$(if [ -e /var/run/vsftpd/vsftpd.pid ]; then cat /var/run/vsftpd/vsftpd.pid; fi)”
seems to fix the problem for me.
同时还有一个现成的解决的例子
其中的详细的代码
https://stateofdev.com/
https://tutorialzine.com/
生而为人,对不起 — 《被嫌弃的松子的一生》