javascript高级程序设计
语言基础
- 语法
- 数据类型
- 流控制语句
- 理解函数
语法
1.区分大小写 ---一切都区分大小写。无论是变量,函数还是操作符都区分。
2.标识符----变量,函数,属性或函数参数的名称。由字母数字下划线美元符号组成第一个不能是数字---推荐用驼峰形式—-注意:关键字,保留字,true,false和null不能作为标识符。
3.注释---单行注释以及多行注释
4.严格模式----‘use strict’ 可全局用也可局部用 ----在这个模式下所有不规范的代码都会被处理
5.语句----语句以分号结尾--不加也没事的但是强烈建议加上养成良好习惯
6.关键字以及保留字---不能用作标识符---这些玩意没屁用想要了解就去找到这两张表看看
7.变量---js是一门动态类型语言也就意味着它变量可以保存任何类型的数据,有三个关键字用来声明变量 var let const
8.var关键字---用来定义变量----这玩意有声明提升每次都会提升到所在作用域的最前面不推荐使用
9.let关键字---用来声明变量----它声明的范围是块作用域,不会声明提升---暂时性死区--推荐使用
var在全局作用域中声明的变量会成为window对象的属性而let声明的则不会
10.const关键字---用来声明常量,如果是基本数据类型不能被改变但是如果是引用数据类型的话是可以进行修改的---块级作用域,暂时性死区
推荐:const优先 let其后 不使用var
数据类型
原始数据类型: undfined null boolean number string symbol
复杂数据类型: object
1.typeof操作符--用来检测数据类型的--只能检测原始数据类型复杂数据类型检测出来都是object
语句
1.if语句
2.do-while语句—先循环在判断
3.while语句----循环
4.for语句----循环
5.for in语句---循环key值一般用来循环对象或者数组
6.for of语句---循环value值一般用来循环数组
7.break和continue 都是用来结束循环---break结束循环 ----continue结束此次循环
8.with语句---将代码作用域设置为特定的对象。---严格模式不允许使用它所以一般我们也不怎么用
9.Switch语句
函数
函数用来封装语句使其成为一个功能
严格模式下:函数不能以eval或arguments作为名称
函数名字不能教eval或arguments
两个命名参数不能拥有同一个名称
变量,作用域与内存
- 通过变量使用原始值与引入值
- 理解执行上下文
- 理解垃圾回收
1.原始值与引用值
instanceof操作符---用来判断数据类型--引用数据类型
2.执行上下文与作用域
变量或者函数的上下文决定了它们可以访问哪些数据,以及它们的行为。
每个上下文都有一个关联的变量对象,而这个上下文中定义的所有变量和函数都存在这个对象上。
3.垃圾回收
自动内存管理实现内存分配和闲置资源回收,也就是说它会自动查找确定哪个变量不会再使用然后就释放它占用的内存。
多使用let const去声明因为它可以做到更早的让垃圾回收程序介入,也就是做到了提升性能嘛。
内存泄露---如果我们的变量不能让回收程序介入那就会造成这样,常见的闭包就会导致内存泄露
离开作用域的值都会自动标记为回收,然后再垃圾回收期间被删除
基本引用类型
- 理解对象
- 基本javascript数据类型
- 原始值与原始值包装类型
1.Date—日期对象
2.RegExp—正则表达式
3.包装对象---更方便的操作原始值(原始值是没有任何方法的)---所以在使用1原始值的属性和方法时它会自动的转换为对象类型然后就可以继承那些属性和方法了
创建实例对象----调用实例上的特定方法----销毁实例
4.单例内置对象---任何js提供,与宿主环境无关,并且在js程序执行时就存在的对象。