《JavaScript高级程序设计》阅读笔记 一

包含:第一章到第四章

说两句:用块引用就是图好看XD


JavaScript是一门用来与网页交互的脚本语言,包含一下三个部分

 ECMAScript:核心,提供核心功能

 DOM:提供与网页内容交互的方法和接口,把HTML内容抽象为分层节点

 BOM:提供与浏览器交互的方法和接口,控制浏览器窗口与本身

第一章小结如上,本章介绍背景,下面是<script>专题


正常下,浏览器必须解释完<script>的代码,然后继续渲染页面的剩余部分 放在末尾

想要推迟执行的脚本,使用defer属性

想要脚本执行不需要等待,使用async属性

如果浏览器不支持<script>内显示的内容,考虑<noscript>

第二章中动态加载脚本较有意思,但感觉不常用。通过向DOM中动态添加script元素,定义好script的属性,再用DOM加载即可。

同时回顾了退出历史舞台的XHTML,而下面是新时代的ES(雾


语法

1.区分大小写

2.标识符采用驼峰命名

3.语句尾尽量还是带分号,可以提升性能,减少解析器的麻烦事

4.使用var,let,const定义变量,当然部分编译器给省了,但尽量还是带着

5.关于var,作用域为一个函数,存在声明提升现象,即会首先把变量声明拉到作用域顶部。同时,全局声明会成为window对象的属性。同时,在循环逻辑中,被定义为迭代变量会渗透到循环体外部

6.关于let,作用域为一个块,不存在声明提升现象,全局声明不会成为window对象属性,不会渗透到循环体外层,但在成为迭代循环的时候,会生成一个新的迭代变量

7.关于const,与let类似,不过需要定义时初始化,同时不能再次被修改,当然限制氛围仅为所指向的引用,如是对象,改对象的内部属性就没事

第三章的第一个部分语法,讲了基本写作规范。对了,记得const优先,let其次,少用var

数据类型

1.原始类型

Undefined(没有初始化,判断中相当于False),Null(可以给对象属性初始化,用来判断),

Boolean(这里不等于数值),Number(Infinity表示无穷大),

String(通常字符字面量带\,一经创建不可改变,可以用 ` 建立模板字符串,可以用${ }插值),Symbol(暂未用到,还特别绕)

对于Number,有如下方法

isNaN(),isFinity()判断是否为不是数值和有限大

parseInt(),parseFloat()转化字符串

对于String,有如下方法

toString()转变为字符串

String.raw()获得原始字符串

2.对象Object

创建对象实例let o = new Object()

每个实例都有如下属性和方法

constructor创建当前对象的函数,isPrototypeOf判断对象是否未原型

hasOwnProperty方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性

toString()返回对象的字符串表示,valueOf()返回对象对应的字符串,数值,布尔值表示

第三章的第二部分数据类型,重点String学了很多新知识,模板字符串,插值,转化什么的。

还有剩余操作符这样的神奇操作。

流控制语句

1.操作符

++a,在同一语句取值a+1,后a+1

a++,在同一语句取值a,后a+1

a**b,即为a^b

==会转化类型比较

===不转化类型

2.语句

if,dowhile,while,for,forin(遍历非符号的元素),forof(遍历可迭代对象),标签语句(见下) ,with语句(见下),switch语句

第一部分的位操作符没有总结,因为内容太多不常用,可随时搜到。特别注意的是,标签语句,类似于goto,用法如下。

loop1:
for (let i = 0; i < 5; i++) {
  if (i === 1) {
    continue loop1;
  }
  str = str + i;
}

还有with语句,可以偷懒少打对象,用法如下

with(location) {
    let qs = search.substring(1);
    let hostName = hostname;
    let url = href;
}
//这里with语句用于连接location对象,变量首先会被认为是局部变量,如果没有发现,
//就会搜索location对象,并被求值为location对象的属性

第三章小结,本章介绍了语法,变量,数据类型,操作符,语句,函数。相对于俺这个之前接触JAVASE与C/C++的小菜鸡来说,印象深刻的新内容为:先用const然后let少用var,` `模板字符串,Symbol符号类型(不会),**为指数运算,标签语句与with语句。


JavaScript变量是松散类型的,而且变量不过就是特定时间点的一个特定值的名称而已

原始值与引用值

1.原始值就是那六种原始类型,按值访问,复制后,产生两个变量

2.引用值是多个值构成的对象,按引用访问,复制后,两个对象指向一个位置

3.传递函数参数的时候,无论何种类型都是传值,就像复制过去一样

4.确定类型时,通过typeof确定原始类型,通过instanceof确定对象类型

第四章的第一部分,出现的注意很是注意:在很多语言中,字符串时使用对象表示的,因此被认为引用类型,而ECMAScript打破了这个惯例。

执行上下文和作用域

1.上下文是个概念,它存在一个变量对象,一个上下文中定义的所有变量和函数都存在于这个对象上。上下文在其所有代码执行完毕后销毁。全局上下文是最外层的上下文。

在浏览器中,window对象为全局上下文,因此通过var定义的全局变量和函数都会成为window对象的属性和方法。

上下文代码在执行时,会创建该能量对象的一个作用域链,决定各级上下问代码顺序。

2.注意,使用with语句和trycatch语句时候,可以提升一个上下文等级

第四章的第二部分,后面还是let,const,var的用法回顾与总结,感觉有点重了,这得实践出真知。

理解垃圾回收

1.JS的垃圾回收通过自动内存管理实现,两种方式标记清理和引用计数

2.标记清理:标记某个变量,反复标记和抹除,最终把有标记的删除

3.引用清理:声明变量引用数为1,赋值加1,被覆盖了减1,为0时被删除

第四章的第三部分,理解嘛,理解就好,所以后面的内容也鸽了。引用标记不如标记清理有效。

小结一下第四章,令人深刻的有原始值和引用值的区别,在传函数值的时候都是传值,上下文执行方式,解除变量的引用可以消除循环引用XX=null。


小结一下小结

先讲了JS的基本组成:ECMAScript、DOM、BOM与HTML如何结合JS。

后说了ECMAScript的基本语法,变量的声明,语句的书写,流程的控制。

最后说了一下,程序编译的时候的流程,引用值和原始值,上下文的执行,垃圾回收。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值