在前面写

今天,我想找出什么样的节点知识,想总结一下,看到一篇关于OL的文章,但是原创链接不在。在快照中,把这篇文章引出来。如果原作者有问题,请与我联系。

这篇文章是一些js的基础,高手自动跳过!以前我没有写js,这个比较弱,所以写节点的时候也遇到了麻烦,在这里给自己添加知识!

文本

Node.js的基础是脚本语言Javascript。大多数的脚本语言的一个共同特点是弱型。

与PHP,PHP是一个新的变量,不需要申报,Javascript仍然需要var来声明它。这VaR覆盖了所有类型的意义,如int,char,字符串,和C++的偶函数。

所有的这和后面的章节编辑Vim Linux或Cygwin,下如果没有内容,然后把它变成你自己的路,然后检查结果的命令行下。

基本语法

变量的声明

在C / C++,我们声明的变量:

` ` ` C++

复制代码代码如下所示:

空(富){ }

int = 0;

字符b = a;

C = 1.0f浮;

无效(* d);



在Node.js,这种情况。

javascript

复制代码代码如下所示:

函数(富){ }

var a=0;

var b = a;

var=1;

var;



所以,不管是什么类型的变量,在Node.js,它是由一个变种的解决

循环语句

我为…

这个循环基本上是作为C / C++一样。

` ` ` C++

复制代码代码如下所示:

为(int = i 0;i <;+;+ +)

{

…

}



因为Node.js是弱类型,它只需要:

javascript

复制代码代码如下所示:

对于(var i = 0;i <;i + +){

…

}

在对…



这是一个后期型循环语句类似于PHP的foreach。

例如,我们有一个JSON对象,如下所示:

Javascript

复制代码代码如下所示:

var { { { {

hello:世界

节点:js

东西:酒吧

};



这时我们可以绕过去了…在。

Javascript

复制代码代码如下所示:

对于(在foo VAR键){

console.log(键+:+ Foo {key});

}



如果我们在命令行中输入以下命令:

复制代码代码如下所示:

foo.js美元结



屏幕上显示以下内容:

复制代码代码如下所示:

你好

:世界

结:JS

Blahblah:酒吧



提示:从上面的…在语句是用来遍历JSON对象,数组,对象的键,并没有提供关键的路径。如果你想获得的核心价值,你只能得到它在foo { }的形式。这是从PHP的foreach有一定差异。

而这样做,会做……

这没什么可解释的。与其他语言没有什么大的区别。如果你有一个变量声明,你需要用变量。

操作人员

+,*,

这些操作都是一样的,我们需要注意的是,它可以是一个字符串或数值操作。虽然型弱类型语言是脆弱的,有时会出现在数字字符串的形式,有时会出现数值的形式,但在必要的时候,或者说它是什么类型,我们可以使用下面的代码来看看结果:

复制代码代码如下所示:

var1;

var b=2;

console.log(A + B);

console.log(parseInt()+ B);



这里是一个内置函数parseInt Node.js,其功能是解析字符串转换成int类型的变量。

上述代码执行的结果是:

复制代码代码如下所示:

十二

三



注:第一console.log结果是12,因为是一个字符串,所以B也通过手势操作字符串。结果是,两个字符串连接在一起,成为12。二console.log结果是3,因为我们将首先为int类型,int类型的变量和两个加在一起,即数值加3。

= =,!= =,!

这里有一点解释,当逻辑运算符长度为2时(= =),!=),只有判决的外在价值是不一样的,但不确定type.as

复制代码代码如下所示:

var a = 1,b =1 ;

console.log(a b);



输出的结果是正确的,但是如果我们在中间判断时加上等号,我们就必须严格判断。当我们需要相同的类型和值时,它是对的或错的。换句话说。

复制代码代码如下所示:

var a = 1,b =1 ;

console.log(a b);



在当时,返回的结果是false,因为A是int,而b是一个字符串。

让我们沿着条件语句继续前进。实际上,如果这里没有其他语言一样。有两个逻辑运算符,两个相等,三个等号,所以我不做很多事情。

类型

这里我把它看作是一个操作符,而不是函数。

这个操作符的功能是确定变量的类型并返回一个字符串,类型名和以下代码的具体执行是已知的。

复制代码代码如下所示:

函数(富){ }

var a=0;

沉默的蛋清汤在睡觉;

var=1;

var;

var:};

var = { 1, 2, 3 };

var = null;

未定义的;

console.log(种类);

console.log(类型B);

console.log(类型C);

console.log(:D);

console.log(E型);

console.log(F型);

console.log(typeof G);

console.log(H型);



执行死刑的结果是:

复制代码代码如下所示:

数

字符串

数

功能

对象

对象

对象

未定义



NULL,未定义,楠

在Javascript中,有三个特殊的值,如题所示。第一人可能熟悉它,C / C++有它,但它是一个很大的情况下,其实质是一个。

` ` ` C++

定义0

在Javascript中,三个值表示不同的含义。

# # #空# # #

空是一种特殊的对象,和一般意义上是空的。例如 uff1a

var = null;

每个人都能理解,不多解释。但不像C或C++,这个零不等于0。

# # #定义# # #

这个东西的意思是说变量没有被声明。为了更好地被划分为null,我们的示例代码写如下:

javascript

复制代码代码如下所示:

var = {

:null

};

console.log(一个{foo));

console.log(一个{酒吧));



在上面的代码中,我们让{}}的值是空的,也就是NULL,而根并没有声明一个{bar}这个东西,它甚至不是空的。输出结果几乎应该被猜出来。

复制代码代码如下所示:

无效的

未定义



南

这是一个空值,它是一个特殊的数字。它的全名不是一个数字。你可以理解不是数字形式或数值错误的数字类型变量,这有点奇怪。

它们大多出现在浮点运算错误(如被分割为0)的情况下,甚至用户也可以使一个变量等于NaN返回一个错误值,让您知道这个函数的操作是错误的。

小。

语句的其余部分类似于已经存在的其他语言,如中断、切换、继续等。

变量类型

本节主要是关于Javascript对象,它几乎是其他类型的。

基本型

这几乎是Node.js包含如下的基本类型:

数

字符串

布尔

阵列

前三种类型可以直接赋值,而数组赋值仅仅是一个赋值赋值,在变量中变量中旧的新变量的值会发生变化,你可以直接试试下面的代码:

Javascript

var = { 1, 2, 3 };

var;

条{ 0 } = 3;

console.log(Foo);

结果是:

Javascript

{ 3, 2, 3 }

也就是说,如果数组复制了一个新数组,就不能使用直接赋值的方法,但必须深入复制。

有必要讨论三种创建数组的方法。

第一:

Javascript

复制代码代码如下所示:

var =新数组();

狗{ 0 } =嘘;

狗{ 1 } 蛋花汤;

狗{ 2 } =睡觉;



第二种:

Javascript

复制代码代码如下所示:

var =新数组()



第四种:

Javascript

复制代码代码如下所示:

var

嘘

{蛋花汤}

睡觉

};



我个人比较喜欢第三种写作方式,比较简洁。

JSON对象

这里我只接受一个JSON对象,而不是把它归类为Javascript对象,如果您觉得我有点误导,您可以跳过这个部分。

我对JSON对象和Javascript对象之间的区别是,如果它只用于存储数据,而不是作为类的实例化,实际上JSON的本质是Javascript对象表示法。

有关JSON的更多信息,请自为百科全书。

声明一个JSON对象在Node.js是非常简单的:

Javascript

复制代码代码如下所示:

var狗{ {

前:嘘

子:{

:蛋花汤

行为:睡觉

时间:12

},

后:{我说

};



在JSON密钥中有两种方法获得密钥对象,第一种是使用点连接,第二种是使用括号:

Javascript

复制代码代码如下所示:

狗

。预;

狗{前};



注意:当点在顶部时,直接用JSON键跟随。如果键被视为要被询问的变量,它只能用狗{键}来测试:现在您必须自己尝试它,并以…在。不要忘记使用typeof喵喵。

类(对象)的基

从严格意义上说,Node.js的类不能被视为一类,但它只是一个聚集的功能,再加上一些成员变量,其本质实际上是一个函数。

但是为了粗俗,我们称它为类,实例化称为对象。

因为一个类有很多功能,或者它的本质是一个函数,所以我们可能会不小心。

类的声明和实例化

声明一个类是很简单的,不要笑。

Javascript

函数(){

…

}

我们已经写了一个富类。

真的这是真的。

不相信吗我不相信你能拿起一段代码来看看它。

Javascript

var(=);

不要把它看作一个函数,如果它是以这样的形式(new)编写的,它就是类的实例化。

所谓的富()实际上是富()类的构造函数。

成员变量

成员变量有两种很好的方法。

第一个是使用这个。在类的构造函数中或任何构造函数中,可以随时声明成员变量,并且不影响外部的用法。无论如何,即使没有声明,也会有一个未定义的支持它,所以这是第一种方式:

复制代码代码如下所示:

Javascript

函数(){

this.hello =世界;

}



注意:只有当添加的是调用类的成员变量,否则它才是函数中的一个局部变量。

第二种方法是在构造函数或任何成员函数之外声明,其格式为原型。:

Javascript

复制代码代码如下所示:

函数(){

…

}

foo.prototype.hello =世界;



不管上面的方法是成员变量的语句,我们都可以看到效果:

Javascript

复制代码代码如下所示:

var(=);

console.log(酒吧。你好);



甚至你也可以用这种方式修改这个类:

Javascript

复制代码代码如下所示:

函数(){

this.hello =世界;

}

foo.prototype.hello =蛋花汤;



然后使用上面的代码输出。

想一想为什么产出的是世界而不是蛋花汤。

构造函数

我们以前说过,这个()实际上是一个构造函数,所以很明显我们可以传递构造函数参数,所以有下面的代码:

Javascript

复制代码代码如下所示:

代码2.1

函数(hello){

如果(hello =未定义){

this.hello =世界;

{人}

this.hello =你好;

}

}



我们看到上面是否有一个奇妙(hello =未定义),判断有什么用第一种可能性是开发人员很难进入未定义的状态,而这一次它是未定义的。

还有一种情况,我们开始说Javascript是弱类型语言,不仅弱型,但也是一个非常不精确的传输参数,你可以更多的传记或邵传(只要你能保证你通过更多或更少,你可以确保程序不会犯错或逻辑不犯错误)原则,多通过参数自动忽略,而不是发送的参数会补充定义。

请看下面的代码。

Javascript

复制代码代码如下所示:

取代码2.1

VaR bar1 =新foo();

VaR bar2 =新foo(蛋花汤);



请输出Hello变量两杆和发现,一是世界的蛋花汤。很明显,我们首先通过观察时,Node.js bar1自动声明:

Javascript

复制代码代码如下所示:

Var bar1 = new foo (undefined);



这就是世界。

在这个构造函数,我们看到,传入的参数是你好有这类,this.hello.but正如我们前面提到的一个成员变量,当这个和这个都没有用,范围是不同的,这个参数只作用于构造函数,而这种联合是与这个成员变量。他们区分它们,立即,所以即使相同的名字并不重要。

成员函数

成员函数声明

成员函数的声明类似于成员变量的第二个声明性方法,即原型。=;

Javascript

复制代码代码如下所示:

取代码2.1

功能sethello(你好){

this.hello =你好;

}

foo.prototype.sethello = sethello;

bar1.sethello(蛋糕);



代码的上面部分是显而易见的,我们实施了Foo类的sethello功能,可以通过它修改的foo.hello价值。

但是写这个有点麻烦吗然后我将讨论Javascript函数的一个重要特性。

这个匿名函数。

大多数时候我们的一些函数在一个地方只引用或调用,然后我们有一个名字,这个函数不值得太多,没有必要,所以我们可以写这个临时函数,让人引用它来引用它,叫它人们叫它。这样函数就可以省略函数名了,比如:

Javascript

复制代码代码如下所示:

函数(hello){

this.hello =你好;

}



至于如何报价或打电话呢如果上面的类需要引用,它是这样写的。

Javascript

复制代码代码如下所示:

foo.prototype.sethello =功能(你好){

this.hello =你好;

}



这样的编写对于成员函数声明是有效的,并且节省了大量代码。事实上,基本类成员函数的声明是以匿名函数的形式声明的。

关于如何使匿名函数调用这通常用于传递只由函数调用的函数。

例如,我们有一个函数原型:

Javascript

复制代码代码如下所示:



我们将传递A,B两个变量,

*在计算a + b的值之后,它被赋予函数(数字)。

*执行输出

* /

功能sumab(A,B,func){

var;

Func(a,b,c);

}



例如,我们有两个版本的输出函数,一个是中文输出,另一个是英文输出,所以如果你不使用匿名函数,它是写的。

Javascript

复制代码代码如下所示:

功能(A,B,和ZH){

对console.log价值(++ + + + B +是:+和);

}

函数EN(a,b,和){

console.log(+++ B + +和);

}

sumab(1, 2,ZH);

sumab(3, 4,EN);



代码被执行,输出将是:

1 + 2的值是:3。

3加4等于7。

这样的代码将以匿名函数的形式存在:

Javascript

复制代码代码如下所示:

sumab(1, 2,功能(A,B,和){

对console.log价值(++ + + + B +是:+和);

});

sumab(3, 4,功能(A,B,和){

console.log(+++ B + +和);

});



这种形式通常用于回调函数。回调机制是Node.js或Javascript的本质。介绍将在以后的章节。

成员函数声明的匿名函数声明

尽管最后一节说了,让我们再说一遍。

通常,我们声明一个类的成员函数是由匿名函数声明的,因为这个函数是这个类的成员函数,它不会在其他地方被引用或调用,所以下面的代码是可用的。

Javascript

复制代码代码如下所示:

取代码2.1

foo.prototype.sethello =功能(你好){

this.hello =你好;

}



这样,我们有sethello Foo类的功能。

2.3.4随机性的。班

这又是我的废话。所谓的类的任意性是,在Javascript中,你可以在任何地方修改你的类,它与Ruby有一定的相似性。

例如,字符串,事实上,也是一类,与成员变量和成员函数如长度等指标和substr。但是如果我们认为字符串是不完善的,并要添加我们自己的方式,我们可以添加一个功能,这是你想要的,例如:

Javascript

复制代码代码如下所示:

string.prototype.sb =函数(){

VaR纽世达= ;

对于(var i = 0;i < this.length;i++){

如果(我% 2 = = = 0)纽世达= S;

其他纽世达=B;

}

返回纽世达;

};



这个函数的意思是填充一个字符串,使之成为某人的化身。

让我们来测试它。

复制代码代码如下所示:

嘘-蛋花汤正在睡觉;

console.log(str.sb());



你会得到结果的:

sbsbsbsbs

你跟你的电脑说花-蛋花汤睡觉,你的电脑,你将被称为四个白痴。

三.附属的

3.1。深拷贝

所谓的深层复制就是自己创建一个数组或对象,手动复制源数组或对象中的基本类型变量,而不是仅仅引用源数组或对象的引用,因此这涉及到递归调用。

下面是我实现的一个深拷贝函数。你可以写一个你自己并把它添加到你自己的js知识库。

Javascript

复制代码代码如下所示:

功能克隆对象(SRC){

VaR dest = { };

对于(var中的var键){

如果(typeof src=对象)DeST {key} =克隆对象(SRC {key});

其他dest {key} = SRC {key};

}

返回dest;

}