javascript基础知识讲解

  

本篇适合javascript新手或者学了前端一段时间,对js概念不清晰的同学~ ~。

  

<强>学习目的

  

本文针对javascript基础薄弱的同学,可以加深对javascript的理解。

  

本文将讲述以下几点对于初学者开说javascript(有的是大部分语言都有的)的坑

  

<强>讲解内容如下:

  

1。连等

  

2。我+ +

  

3。包装对象

  

4。引用类型

  

5。,,与| |

  

<强>讲解部分

  

<强> 1。连等

  

  

连等是常见的表达式,但是并不是所有情况都适合连等,

。      //字面量连等得到想要的结果   var a、b;   a=b=2;//2   b//2//引用类型连等不可预测   var arr1 arr2;   arr1=arr2=[]   arr1 [0]=10   arr2 [0]//10//引用类型连等使得两个引用指向一个对象,操作其中一个,两个值都变   之前      

以上代码是常见的连等,有时候我们需要两个变量同赋值为一个值,我们就这样来操作,但是,如果是引用类型可不能连等赋值哦。

  

此外,连等赋值会有一个很大的漏洞,就是会将变量泄露到全局中去,上面代码我们没有将其泄露,但看下面代码:

        函数fn (num) {   var=b=num;//num   b//num   }   fn (10)//报的错   b//10//我们并不没有定义全局变量b   之前      

可以看的到,我们执行了fn函数后,全局作用域中出现了b变量,这是为什么& # 63;看var=b=num这句话,这句话可以分成两句来看

        var一   a=b=num//只声明了   之前      

我们其实只声明了一个变量,连等的b并没有声明,由此可以知道,b被挂在了全局的窗口对象上,造成了变量泄露到了全局。

  

  

上面只是简单的例子,接下来我们看一个复杂点的例子

        var={x: 1}   var b=一个   一个。x=={y: 1}   一个。x//未定义   b。x//{y: 1}   之前      

这个例子是在一个测试题中看到的,乍一看,好像不明觉厉,但是一点都不难理解。

  

1。a和b是引用了类型,同指向了一个对象{x: 1}

  

2。一个。x引用了原对象的x属性,一个则为一个引用变量

  

3。a ={y: 1},只是将这一个引用变量的指针指向了另一个对象{y: 1}

  

4。一个。x=a,前者还是代表着原来的对象的x属性,也就是b引用的对象的x属性

  

5。赋值完毕。

  

可能你还没有理解,不要急,下面我们将解剖javascript引擎让你懂的明明白白

  

  

引擎的工作原理:引擎在解析javascript表达式时,会进行lh查询,园艺学会查询(详见《你不知道的javascript》),我将它们理解为lh(赋值),皇家园艺(查找)。

  

下面,就上面例子,我们来演示一下引擎的工作流程

        var={x: 1}//引擎:我将要对一个变量lh(赋值),内容是{x: 1}//作用域:刚声明了一个变量,给你。   var b=一个//引擎:我将要对一个变量RHS(查找)//作用域:你刚刚给它韩了,给你吧//引擎:我将要对b变量lh(赋值),内容为一个变量指向的对象//作用域:刚声明了b变量,给你。   一个。x=={y: 1}//引擎:我将要对一个进行lh(赋值),内容是另一个对象{y: 1}//作用域:可以,给你,但好像还有其他命令,先不要赋值。//引擎:是的,下一步我还需要对。x进行lh(赋值),内容是将要改变一变的量//作用域:可以,变量指向的对象有x属性,不过马上一个就改变了,不过没关系,b变量也指向那个对象,赋值完后,你可以用b变量引用旧对象。//引擎:了解了,我先把一个变量赋值为一个新的对象,然后把原来的一个变量指向的对象的x属性赋值为新。   一个。x//未定义//引擎:我需要拿到一个变量指向的对象的x属性//作用域:你刚刚改变了一个的指向,现在的一个指向的对象已经没有x属性了   b。x//{y: 1}//引擎:我需要拿到b变量指向的对象的x属性//作用域:你是想拿到你旧对象的x属性吧,给你,不过已经被你在之前改变了值,现在b.x的值就是一个指向的新对象的值。   之前      

以上是我的理解,没有权威认证。想详细了解执行过程,请参考《你不知道的javascript》,如果本节有误,请指出。

  

<强> 2。+ +操作符

  

大家最很常用+ +操作符,其实也没什么很大奇特之处,但是对于新手入门的你是否真正了解他。

javascript基础知识讲解