1、JavaScript发展史,JavaScript概念。
1.1 、JS发展史:
山寨打败原创(微软,网景)
1.1.1、1995年,表单验证。
1.1.2、Netscape(网景),布兰登(Brendan Eich)
1.1.3、标准:ECMAScript (国际标准化组织及国际电工委员会 )
1.2、JS的概念:
网页交互、客户端脚本语言(与服务端脚本语言不同)
1.2.1、JS是一种专为与网页交互而设计的客户端脚本语言。
1.2.2、程序是有序的指令的集成。
1.2.3、JS 是一种具有面向对象能力的、解释型的程序设计语言。
1.2.4、基于对象和事件驱动并具有相对安全性的客户端脚本语言。
1.2.5、不需要在一个语言环境下运行,只需要支持它的浏览器。
1.3、JS的作用:
验证发往服务器端的数据、增加 Web互动、加强用户体验度等.
1.3.1、表单验证
1.3.2、用户互动
1.3.3、网页特效
1.4、运行平台:
IE,firefox(火狐),chrome(谷歌),欧朋,苹果等浏览器。
1.5、客户端脚本语言的特点
JS脚本语言的特点:
1.5.1、脚本语言。解释型、逐行进行解释。
1.5.2、基于对象。基于对象、可以创建对象,可能使用现有的对象。
1.5.3、简单。弱类型的变量类型,对使用的数据类型无严格要求。
1.5.4、动态性。采用事件驱动,不用经过服务器可对用户的输入做出响应。
访问网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作,JS可直接对这些事件给出相应的响应。
1.5.5、跨平台性。不依赖于操作系统,仅需要浏览器的支持。
JS可以在任意机器使用,前提机器上浏览器支持JSt脚本语言,大多数的浏览器都支持JS脚本语言。
2、JavaScript的组成。
2.1、JS由三部分组成。
ECMAScript、BOM、DOM
2.1.1、核心 : ECMAScript
欧洲计算机制造商协会
2.1.2、BOM
2.1.2.1、浏览器对象模型
2.1.2.2、Browse Object Model,
2.1.2.3、提供与浏览器交互的方法和接口(API),
2.1.2.4、利用BOM控制浏览器显示页面以外的部分。
2.1.3、DOM
2.1.3.1、文档对象模型
2.1.3.2、Document Object Model,
2.1.3.3、提供访问和操作网页HTML内容的方法和接口。
2.2:JavaScript 和 ECMAScript
2.2.1、含义相同。
2.2.2、JavaScript 的含义 比ECMA-262 中规定的多。
2.3、编辑工具和运行平台
2.3.1、编辑工具
HBuilder,Dreamweaver,sublime Text,Notepad++,文本等..
2.3.2、运行平台
IE,firefox(火狐),chrome(谷歌),欧朋,苹果等浏览器。
3、JavaScript的标签。
3.1、标签
3.1.1、文件引入
<script type=" 文件类型 " src=" 路径 " ></script>
3.1.1.1、
3.1.1.1.1、 type 脚本语言的类型 type = text/javacript
3.1.1.1.2 、src 要引入的外部文件 src = " 路径 "
3.1.1.2、注意:
3.1.1.2.1、不可以使用单标。
3.1.1.2.2、不可以在引入了外部文件的标签中写代码。
3.1.2、代码
alert( " 每句话后面要写分号结束! " ) ;
3.1.3、
document.write( " 可以输出任何HTML的代码 " );
3.2、JS与HTML的执行顺序
3.2.1、从上朝下,谁在前先执行谁,无特殊需求。
3.2.2、JS代码一般写在<head>与</head>中间,也可在html文件的任何地方。
3.2.3、可以出现多个JS标签。
3.3、JS的注释
3.3.1、单行注释 //
3.3.2、多行注释 /* */
4、JS的数据类型,变量。
4.1、字面量、直接量。
程序中直接显示的数据
4.1.1、数字字面量 Number : 100
4.1.2、字符串字面量 String :" 张三 "
4.1.3、布尔字面量 Boolean : false / true
4.1.4、正则表达式字面量 : /abc/gi
4.1.5、对象字面量为空 Object : null
4.1.6、对象字面量表达式 Object :{x:1, y:2}
4.1.7、数组字面量表达式 Array :[1,2,3,4,5]
4.2、变量的定义
4.2.1、使用 var
var age; //var 是关键字,age是变量名
4.2.2、 赋值:age = 20;
4.2.3、 定义的同时赋值: var age=20;
4.2.4、可以一次定义多个变量:
var name=“zhangsan", age=18,weight=108;
4.2.5、JS是弱数据类型,容错性较高, 赋值后才确定数据类型
var temp; // temp 时啥数据类型?不确定
temp = 12; // temp 变量是数字类型
temp = “hello”; // temp 变量变成了字符串类型
alert(
typeof temp); // typeof 判断数据类型
4.2.6、关键字和保留字
4.2.7、标识符和命名规范
4.2.7.1、标识符
JS定义的符号,即:变量名、函数名等。
4.2.7.1.1、 标识符组成
任意的大小写字母、数字、下划线(
_)和美元符 (
$)。
4.2.7.1.2、不能以数字开头。
4.2.7.1.3、不能有关键字和保留字。
4.2.7.1.4、区分大小写。
例:age和Age表两个不同的变量。
强烈不建议使用同一个单词的大小写区分两个变量。
4.7.2、变量的命名
4.7.2.1、匈牙利命名法。见名知意
4.7.2.2、驼峰命名法。
4.8、数据类型
4.8.1、Boolean: 布尔类型
4.8.2、Number:数值类型、数字(整数,浮点数float)
4.8.3、String:字符串类型
4.8.4、Array:数组类型
4.8.5、Object:对象类型
4.8.6、Null、Undefined:特殊类型
4.8.7、NaN:非数值类型
4.8.8、Function:函数类型
4.9、typeof
typeof 操作符用来检测值或变量的数据类型。
返回类型有:
undefined 未定义
boolean 布尔值
string 字符串
number 数值
object 对象、数组或者null
function 函数
array 数组
4.10、
Undefined 类型
4.10.1、只有一个值,undefined 。
4.10.2、使用 var 声明变量,无初始化,变量值为 undefined 。
例:var box;
alert(
box);//undefined
4.10.3、定义变量,声明的同时赋值 。
4.11、
Null 类型
只有一个值,null 。
表示一个空对象引用(
指针),而 typeof 操作符检测 null 会返回 object 。
例:var box = null;
alert(
typeof box);
4.12、Undefined 与 Null 的关系。
4.12.1、null (父母)派生 undefined(子女),
ECMA-262 规定
当 undefined == null 即值相等时,则 返回 true。
4.12.2、数据类型不同。
null 返回是 Object类型
undefined 返回是 undefined 类型。
例:var box;
var car = null;
alert(
typeof box == typeof car); // 值相等,类型不同
4.13、
Boolean 类型
4.13.1、两个值(
字面量):true和false。
true = 1,false = 0。
4.13.2、JS区分大小写,所以True 和 False 或者其他都不是 Boolean 类型的值。
例:var box = true;
alert(
typeof box);
4.12.3、Boolean 可以将一个值转换为 Boolean 值,可以使用转型函数Boolean()。
var hello = " Hello World! ";
var hello2 = Boolean(hello);
alert(
typeof hello2);
4.12.3.1、Boolean 类型转换规则
String: 非空字符串为true,空字符串为false 。
Number: 非0数值为true,0或者NaN为false 。
Object: 对象不为null,则为 true,null为false 。
Undefined: undefined 为 false 。
4.13、Number 类型
包括:整型、浮点型。
4.13.1、整型
例:var box = 100; // 十进制整数
alert(box);
4.13.2、浮点类型
必须包含一个小数点,且小数点后面必须至少有一位数字
例:var box = 0.8;
var box = .8;
// 有效,不建议
5、运算符的简单使用。
5.1、算术运算符。
+(加)、-(减)、*(乘)、/(除)、%(取余,求模)
5.2、字符串和变量的拼接。
+
5.3、关系运算符。
>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、
==(等等于,值相同)、===(全等于,值和类型都相同)、
!=(不等于,值不同)、!== (不全等于,值和类型都不同)
5.4、逻辑运算符。
与(且)&&、或 ||、非 !
5.5、赋值运算符。
+=(加等于)、-=(减等于)、*=(乘等于)、
/=(除等于)、%=(取余等于,求模等于)
5.6、自增和自减。
++a(先加)、a++ (后加)
--a、a--
5.7、类型转换
字符串转换数字类型:parseInt( )、parseFloat( )
parseInt( ) 是把其它类型转换为整型;
parseFloat( ) 是把其它类型转换为浮点型(小数)
四舍五入Math.round(78.566)--->78
6、进制转换。
6.1、内存
就是大量的开关,每个开关,
可以存储一个1或0,称为一位(1bit),
每八位称为1字节(
1byte)
1byte = 8位
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
...
1PB, 1EB
1位:是二进制的0或者1
6.2、二进制: 0, 1 (0~1)
6.3、八进制: 0, 1, 2, 3, 4, 5, 6, 7 (0~7)
6.4、十进制: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (0~9)
6.5、十六进制: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (0~15)
6.6、进制的转换
6.6.1、常用值: 2的次方
2^2 = 4 2*2
2^3 = 8 2*2*2=8
2^4 = 16 2*2*2*2=16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048
6.6.2、2进制的转换
2进制:101011
转10进制:(从右往左)
1*2º + 1*2¹ + 0*2^2 + 1*2^3 +0*2^4 + 1*2^5 = 1+2+0+8+0+32 = 43
转8进制:(从右往左3个一组 101 011):53
转16进制:(从右往左4个一组 0010 1011):2B
6.6.3、10进制的转换
10进制:43
转2进制:32+8+2+1 = 101011
转16进制:32+11 = 2B
转8进制:40+3 = 53
6.6.4、8进制的转换
8进制:53
转10进制:5*8¹ + 3*8º = 43
6.6.5、16进制的转换
16进制:2B
转10进制:2*16¹ + 11*16º = 32+11 = 43
8进制和16进制转非10进制,
可以先转换成10进制,再由10进制转