javascript 浏览器脚本语言 最大的特点就是单线程了。JavaScript的主要用途是与用户互动,以及操作DOM。负责内容 样式 行为分离环节中的分离部分。
- js的组成
ECMAScript 核心 几乎没有兼容问题 担任解析器的角色 处理我们的逻辑代码
DOM 文档对象模型;文档指的就是网页;把网页变成一个JS可以操作的对象;给了JS可以操作页面元素的能力;document;有一些兼容性问题;
BOM 浏览器对象模型;给了JS操作浏览器的能力;window;有许多兼容性问题
- js的引用
- 外部文件 script标签 src属性
- 内部 script标签区域
- 注释方式 单行注释 多行 注释
- 数据类型
基本类型(primitive)
1.Undefined
在使用var声明变量,但未对其加以初始化时,这个变量的类型就是undefined,且其默认初始化值为undefined
对未声明与初始化的变量,直接使用,那么这个变量的类型也是undefined,但是没有默认初始化值。
type test;//undefined 直接调用就会报错
2.Null
null类型的默认值是null,表示一个空对象指针,如果定义的变量准备在将来用于保存对象,那么就该将该变量初始化为null。
3.Boolean
该类型有两个值:true false
Boolean()方法 可以转换其他数据类型为布尔值

4.Number
整数 可以通过10进制 8进制 16进制表示
浮点数 该数值必须包含一个小数点,小数点后面必须有一位数字,如果小数点后只有0,自动转换成整数
浮点数占据的空间内存是内存的两倍,极大极小的数字会用e科学表示法。
NaN
1、即非数值,是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数,未返回数值的情况。比如任何数值除以0,本是不符合规范的,js里,这样的操作返回NaN(但是实际上,只有0除以0时返回NaN,其他则无穷值)。
2、NaN有两个不同寻常的特点:任何涉及NaN的操作都会返回NaN,NaN值与任何值都不相等,包括本身。
3、isNaN()函数,这个函数可以判断,传递的参数是否“不是数值”这里涉及数值转换的问题,例如“10”这个字符串就可以转换为10,但是“blue”这个字符串则无法转换为数字,所以isNaN("blue")==true
Number() 可以 任何类型
parseInt() parseFloat() 只用于字符串类型
5.string
'' ""单引号 双引号
基本类型的特点:
基本类型的值是不可变得
复杂对象类型 Object 对象是属性和方法的集合
基本类型以外 就是引用类型
引用类型的特点
引用类型的值是可变的
- 变量 var (let const)
变量是一个杯子,它的类型是由它里面存放的东西决定的
可以通过 typeof
命名规范 一般推荐驼峰式命名
-语句
-运算符
() 括号 提升运算级别 优先运算
++ -- 递增 递减 有前置和后置
前缀形式是先运算再赋值
后缀形式是先赋值在运算
! && || 逻辑非
*/%
+ 加法 拼接
<= >=
== !=
=== !==
< >
?: 三元条件表达式
= += -=
流程控制语句:
if 最基本的条件判断语句
switch
?:
for、while、do-while
for-in 遍历对象
forEach 遍历数组
try catch
width
eval
- 作用域
- this:可以参考this这篇文章。
this是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
1. 普通函数调用
2. 作为对象方法的调用
3. 作为构造函数调用
4. apply() call()
- “构造函数”,其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上
用构造函数生成实例对象,有一个缺点,那就是无法共享属性和方法。
继承
对象之间的继承方法 1. 构造函数绑定 使用call或apply方法,将父对象的构造函数绑定在子对象上
任何一个prototype对象都有一个constructor属性,指向它的构造函数
每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性。