Tagged: Javascript注意事项

六个Javascript新手需要注意的事情 0

六个Javascript新手需要注意的事情

我们写这篇文章当然不是说Javascript不好,只是说它有些特性和我们通常理解的面向对象的语言有些差别。而这些差别很有可能和你所想的有很大的差别。但并不是说他们就不好,从另外一个方面来讲,假如你习惯了,也许这也是Javascript独特的魅力。 1. 三个等号 假如你学过别的编程语言,比如Java之类的,你肯定知道一个等号表示赋值,两个等号表示比较。但是在Javascript中,你会发现这里不仅有两个等号,还有三个等号===。我们应该使用哪个呢?他们之间有什么差别的呢?其实两个等号,简单说就是只比较他们的值,而不管他的类型,比如: 这里会返回true,因为他们的值是相等的,哪怕他们是不同的类型。 再看下面这个例子: 在三个等号的情况下,上面一个例子会发现’2’和2的类型不同,所以就会直接返回false。也就是说三个等号需要是同样的类型,然后才进行值的比较。 通常来说,会推荐使用三个等号来进行比较。 2. 很多创建对象的方法 在Java或者C#中,你会有一个类,然后基于类创建对象。而在Javascript中,则更加灵活,你可以使用一下方法来创建对象: 使用类:Javascript中也有class,你可以定义相应的方法,域,getter, setter的调用等等。下面就是一个例子: 对象字面量(Object Literal): 你可以不定义类就创建对象,你只要使用{}就可以了,如下所示: 使用 Object create:你可以使用object.create()来创建对象,他是基于现有对象的prototype来创建的。参见下面的例子: 3. 块语句,看起来好像没有作用域 一些块语句,比如if, for, while等等,并不会创建一个本地的局部域。这也就意味着你在他们里面创建的变量,在他们外面是可以访问的。比如: 这里,console.log(i)会打印10,是不是很惊喜,为什么这个i在for循环之外还能访问呢?假如你去问Javascript的创始人Brendan Eich,他回答你,这就是个feature,哈哈。 假如你想让Javascript这个特性和别的你熟悉的语言类似的话,那么你可以使用let或者const,像下面这样: 这样之后,你会得到i没有定义的错误。为什么会这样,因为let允许你定义只在某一个块中存在的变量。所以,这就是使用let而不是var的一个典型场景。 4. 上下文中,this的值是什么 你可能听说过一个玩笑,就是根本没有知道this是什么,假如一个空文件,那么this是一个全局的语境。比如下面这个代码: 上面代码中,我们把name赋给global变量,这个this的值就从global的语境中得来。 我们再来看下面这个代码: 在这里,this就是这个object本身了,这里我们知道name是什么,比如例子中就是chris。...