对JS的理解(高程三前四章)

JS全名为JavaScript,分为ECMAScript,BOM和DOM。其中,ECMAScript规定了语言的组成部分,语言本身不包含输入和输出定义。Web浏览器只是ECMAScript可实现的宿主之一,其他宿主还有Node等。DOM是文档对象类型,用于HTML的应用程序编程接口API。DOM将整个页面映射为一个多层节点结构,通过DOM树实现对文档的操作。BOM是浏览器对象模型,针对浏览器的JavaScript扩展(作为JavaScript实现确没有相关标准的一部分)

ECMAScript定义语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象

语法定义了JS中的命名原则,注释方法,严格模式,语句

关键字是JS中具有特定用途的字符,保留字是JS中不能用作标识符的字符。

变量可保存任何类型的数据,使用var来声明,分为全局变量和局部变量。

JS的数据类型:Undefined类型、Null类型、Boolean类型、Number类型、String类型、Object类型(使用typeof操作符检测)

  • Undefined类型:已经声明的变量但未对其加以初始化。(只有一个值)
  • Null类型:空对象(只有一个值)
  • Boolean类型:布尔值(turn和false)
  • Number类型:数值,包含整数浮点数,有数值范围,若是非数值则会返回NaN这个特殊数值。
  • String类型:字符串,使用引号包围,不可直接识别的字符使用转义字符。不可改变,创建后只能销毁。
  • Object类型:对象(也就是数据和功能的集合)使用new操作符创建。

其中Boolean类型、Number类型、String类型可将其他数据类型通过方法或函数转换为自己的类型,Object类型可以通过函数或者方法转换为其他类型。

操作符是用于操作数据的符号,包括算术操作符、位操作符、关系操作符和相等操作符。

语句定义了JS的语法,使用一个或多个关键字来完成给定任务。包含if语句、do-whlie语句、while语句、for语句、for-in语句、label语句、break和continue语句、with语句、switch语句。

函数使用function关键字声明,可以封装任意多的语句,可在任何地方、任何时候调用执行。实际上也是一种对象

变量分为两种类型:

  1. 基本类型(数据类型为Undefined类型、Null类型、Boolean类型、Number类型、String类型)
  2. 引用类型(数据类型为Object类型)

两者的区别:

  • 基本类型的数据可以直接访问,引用类型的数据只能通过属性/方法访问(操作对象时是在操作对象的引用而不是实际对象)
  • 只有引用类型可添加属性
  • 基本类型复制后为两个相互独立的变量,引用类型复制后都指向相同对象(若对象被更改,则两个变量都变化)

传参时不同类型的变量遵守各自的复制的原则

执行环境定义了变量或函数有权访问的其他数据,全局执行环境是最外围的执行环境,根据ECMAScript的宿主环境的不同,执行环境的对象也不同。在Web浏览器中,全局执行环境被认为是window对象,因此所有的全局变量和函数都是作为window对象的属性和方法创建的。某个执行环境中的所有代码执行完毕后,该环境销毁,保存在其中的所有变量和函数定义也随之销毁。

每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入环境栈中。在函数执行后,栈将其环境弹出,把控制权返还给之前的执行环境。

作用域链保证对执行环境有权访问的所有变量和函数的有序访问,当代码在一个环境中执行时被创建。作用域链的前端是当前执行代码所在环境的变量对象,之后的变量对象来自包含(外部)环境,直到最外层。每个函数都可以向上搜索作用域链但不能向下搜索(冒泡的原理)

延长作用域链的方法:

  • try-catch语句的catch块
  • with语句

JS函数中的变量只在函数运行时存在,运行结束则自动销毁,所以在外部是无法访问的。

作用域链是以执行代码的执行环境一步一步向父环境进行搜索的,若某一个属性相同,则显示子环境的属性值

垃圾收集:JS具有自动垃圾收集机制,自动清除。收集有两种方式

  • 标记清除(进入环境、离开环境、准备删除,在函数运行的同时标记)
  • 引用计数(按照使用次数进行计数,为0则删除)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值