历史 简介
一个完整的 JavaScript 实现是由以下 3 个不同部分组成
- 核心(ECMAScript)
- 文档对象模型(DOM) Document object model (整合js,css,html)
- 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
- Javascript 在开发中绝大多数情况是基于对象的.也是面向对象的.
所谓的基于对象就是直接使用,用new创建一个新的类
ECMAScript 描述了以下内容:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 运算符
- 对象 (封装 继承 多态) 基于对象的语言.使用对象.
- JavaScript的引入方式
JS的引入方式
|
|
JS基础
强类型与弱类型的语言
Python是强类型的语言,是数据类型的原因,同时是动态语言(与声明和编译解释有关)
print(12+”hello”) 会报错,是不同的数据类型,不能相加
JavaScript是弱类型的语言
这种是隐式转换,数字自动转换成字符串
无类型: 汇编
弱类型、静态类型 : C/C++
弱类型、动态类型检查: Perl/PHP
强类型、静态类型检查 :Java/C#
强类型、动态类型检查 :Python, Scheme
静态显式类型 :Java/C
静态隐式类型 :Ocaml, Haskell
变量
|
|
声明变量时不用声明变量类型. 全都使用var关键字;
关键是分号结尾一行可以声明多个变量.并且可以是不同类型.
1var name="aa", age=20, job="bbb";声明变量时 可以不用var. 如果不用var 那么它是全局变量.
- 变量命名,首字符只能是字母,下划线,$美元符 三选一,且区分大小写,x与X是两个变量
- 变量还应遵守以下某条著名的命名规则:
|
|
规范
分号结尾,可以不写,但是是以换行符进行区分
注释 支持多行注释和单行注释. / / //
使用{}来封装代码块
常量和标识符
常量 :直接在程序中出现的数据值
标识符:
- 由不以数字开头的字母、数字、下划线(_)、美元符号($)组成
- 常用于表示函数、变量等的名称
- 例如:_abc,$abc,abc,abc123是标识符,而1abc不是
- JavaScript语言中代表特定含义的词称为保留字,不允许程序再定义为标识符

数据类型
数字类型
不区分整型数值和浮点型数值
所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式
能表示的最大值是±1.7976931348623157 x 10308
能表示的最小值是±5 x 10 -324
整数
在JavaScript中10进制的整数由数字的序列组成
精确表达的范围是-9007199254740992 (-253) 到 9007199254740992 (253)
超出范围的整数,精确度将受影响浮点数
使用小数点记录数据 例如:3.4,5.6 使用指数记录数据 例如:4.3e23 = 4.3 x 1023
字符串
都是Unicode数据,所以没有字符编码的问题
是由Unicode字符、数字、标点符号组成的序列
字符串常量首尾由单引号或双引号括起
JavaScript中没有字符类型
常用特殊字符在字符串中的表达
字符串中部分特殊字符必须加上右划线\
常用的转义字符 \n:换行 \’:单引号 \”:双引号 \:右划线
布尔型Boolean()
Boolean类型仅有两个值:true和false,也代表1和0,实际运算中true=1,false=0
|
|
结果是2
Null & Undefined
|
|
结果:
number
string
boolean
undefined
undefiend类型
Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。
当函数无明确返回值时,返回的也是值 “undefined”;Null 类型
另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
强制类型转换
parseInt()
NaN:当涉及数据准换成数字的时候不行
console.log(parseInt(“3.43abc”));//结果是3.43
console.log(parseInt(“a3.43a”))//此时的结果就是NaN 不是一个数字parseFloat()
强制转换成成数字 console.log(parseFloat(“6.12”));//把字符串转转换成相应的浮点数- evel()
将字符串强制转换为表达式并返回结果 eval(“1+1”)=2 ;
类型查询函数
typeof
|
|
运算符
算数运算符
加(+)、 减(-)、 乘(*) 、除(/) 、余数(% )
递增(++) 、递减(--)
先引用再赋值
结果:
10
11
先计算 后引用
结果:
11
11
逻辑运算符
等于 ( == ) 、不等于( != ) 、 大于( > ) 、 小于( < ) 大于等于(>=) 、小于等于(<=) 与 (&&) 、或(||) 、非(!)
|
|
与运算的时候是同时为真才为真,有一个为假就是假
或运算的时候有一个为真就是真
辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
- 如果某个运算数是 null,返回 null。
- 如果某个运算数是 NaN,返回 NaN。
- 如果某个运算数是 undefined,返回undefined。
NaN
not a number
NaN 与参与的运算都是false,除了!=
console.log(NaN!=NaN);//只有这个的结果是True
等性运算
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
console.log(true == 1);console.log(false == 0);如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
console.log(“3”==3)如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
- 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
全等号和非全等号
等号(\=\=)和非等号(!\=\=)的同类运算符是全等号(\=\=\=)和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。
|
|
关系运算符(重要)
|
|
比较数字和字符串
|
|
比较下面的情况
上面这段代码比较的是字符串 “25” 和 “3”。两个运算数都是字符串,所以比较的是它们的字符代码(”2” 的字符代码是 50,”3” 的字符代码是 51)。
总结:
- 比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.
- 比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
流程控制
基本的语言都是这样的
- 顺序语句
- if-else
- 循环语句
if-else
if-else
|
|
if else if else
|
|

switch 选择控制语句 switch case
|
|
|
|
for循环
|
|
|
|
求和
while循环
|
|
异常处理
|
|
参考资料: