简介
JavaScript是一门跨平台、面向对象的脚本语言,用于控制网页行为,它能使网页可交互
JavaScript 和 Java是完全不同的语言,不论是概念还是设计。但基础语法类似
JavaScript(简称:JS)是1995年由Brendan Eich 发明,并于1997 年成为一部ECMA标准
ECMAScript 6(ES6)是最新的JavaScript版本(发布于2015年)
引入方式
内部脚本
内部脚本:将JS代码定义在HTML页面中
在HTML中,JavaScript 必须位于<script> 与</script>标签之间
注:在HTLM文档中可以在任意地方放置任意数量的<script>,但一般把脚本置于<body>标签的底部,可改善显示速度,因为脚本执行会拖慢显示
外部脚本
外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中
使用script标签的src属性引入文件
注:
1.外部脚本中不能包含<script>标签
2.<script>标签不能自闭合,如下
这样则无法生效
基础语法
书写语法
1.区分大小写:和Java一样,变量名、函数名以及其他一切东西都是区分大小写的
2.每行结尾的分号可有可无(与Java不同)
3.注释:
单行注释://注释内容
多行注释:/* 注释内容 /*
4.大括号表示代码块
输出语句
1.使用window.alet()写入警告框(window.可以省略)
2.使用document.write()写入HTML输出
3.使用console.log()写入浏览器控制台
变量
var
JavaScript 中用var关键字(variable的缩写)来声明变量
var声明的变量的作用域为全局,且可以重复定义,如下
let
ECMAJavaScript 6 新增了let关键字来定义变量。他的用法类似于var,但是声明的变量,只能在let关键字所在的代码块内有效,且不允许重复声明
const
ECMAJavaScript 6 新增了const关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变
注意事项
1.JavaScript 是一门弱类型语言,变量可以存放不同类型的值
2.变量名需要遵循如下规则:
组成字符可以是任何字母、数字、下划线或美元符号
数字不能开头
建议使用驼峰命名
3.在定义变量时不需要指定数据类型
数据类型
JavaScript 中分为原始类型 和 引用类型
原始类型
number:数字(整数、小数、NaN(Not a Number))
string:字符、字符串、单双引皆可
boolean:布尔。true、false
null:对象为空
undefined:当声明的变量未初始化时,该变量默认值是undefined
使用 typeof 运算符可以获取数据类型,如
注意事项:若一个变量的值为null,那么改变量使用typeof得到的数据类型是object,而不是null
引用类型
引用类型即为对象,同Java
运算符
一元运算符:++、--
算数运算符:+,-,*,/,%
赋值运算符:=,+=,-=
关系运算符:>,<,>=,<=,!=,==,===
逻辑运算符:&&,||,!
三元运算符: 条件表达式 ? true_value : false_value
注:关系运算符中除===外的运算符在使用时会自动进行类型转换,在进行比较
而===在判断出前后值类型不同时就会直接返回false
类型转换
其他类型转为数字
1.string:将字符串字面值转为数字,若字面值不是数字,则转为NaN。一般使用parseInt方法进行转换
2.boolean:true转为1,false转为0
其他类型转为boolean
1.number:0和NaN转为false,其他数字转为true
2.string:空字符串转为false,其他字符串转为true
3.null:转为false
4.undefined:转为false
注意事项
在Java中使用传输的变量时需要进行健壮性判断,但在JavaScript中一般不用
如图,可以直接将变量作为条件表达式使用,会自动进行转换
流程控制语句
if,switch,for,while,do...while
同Java相同
注:在使用for循环等控制语句时,i变量一般使用let变量
函数
函数,作用即Java中的方法,但定义方式略有不同
定义
使用function关键字进行定义
方式一
function 函数名(参数1,参数2...){
要执行的代码
}
注:
1.形式参数不需要类型
2.返回值不需要定义类型,可以直接在函数内部使用return返回
例:
方式二
var 函数名 = function(参数列表){
要执行的代码
}
例:
调用
调用:函数名(实际的参数列表)
例:
注:JS中,函数调用可以传递任意个数参数
若传递的参数超出形参个数,则只接受等同于形参个数的参数,多余的略过
若传递的参数少于形参个数,则无参数的形参的值为undefined
例:
对象
Array
JavaScript Array对象用于定义数组
定义
var 变量名 = new Array(元素列表);//方式一
var 变量名 = [元素列表];//方式二
访问
arr[索引] = 值;
arr[0] = 1;
特点
JS数组的长度和类型都可变,且数组的索引从0开始
1.长度
对于长度,若定义对象时只添加了三个元素,然后直接给第10个元素赋值,仍可赋值
此时访问该数组时,若直接访问整个数组,则中间未赋值的内容为空字符串
若访问中间的某个未赋值的内容,则为unidentified
2.类型
JS数组中类型并不固定,一个数组中可以同时存在多个类型的数据
属性
属性 | 描述 |
length | 数组中元素的数目 |
方法
方法 | 描述 |
push | 添加元素 |
splice | 删除元素 |
String
定义
var 变量名 = new String(内容);//方式一
var 变量名 = 内容;//方式二
注:内容使用单引号或双引号皆可
属性
属性 | 描述 |
length | 字符串的长度 |
方法
JS中String的方法和Java中String的方法基本相同
方法 | 描述 |
charAt() | 返回在指定位置的字符 |
indexOf() | 检索字符串在整个字符串中的位置 |
trim() | 去除字符串前后的空格 |
自定义对象
格式:
var 对象名 = {
属性名称1:属性值1,
属性名称2:属性值2,
...
函数名称:function(形参列表){}
...
};
BOM
Browser Object Model 浏览器对象模型
Javascript 将浏览器的各个组成部分封装为对象
组成:
Window:浏览器窗口对象
Navigator:浏览器对象(开发时使用较少)
Screen:屏幕对象(开发时使用较少)
History:历史记录对象
Location:地址栏对象
Window
Window:浏览器窗口对象
获取
直接使用window即可
如使用方法alter,直接window.alter(...)即可,但是window可以省略
属性
获取其他BOM对象
方法
方法 | 描述 |
alter(一段消息) | 显示带有一段信息和一个确认按钮的警告框 |
confirm(一段消息) | 显示带有一段信息以及确认按钮和取消按钮的对话框,并且会根据用户的选择返回true或boolean |
setTimeout(function,毫秒值) | 在一定的时间间隔后执行一段function,只执行一次 |
setInterval(function,毫秒值) | 在一定的时间间隔后执行一段function,循环执行 |
function:定义函数(方法)的关键字,即上述的两个方法需要添加一个函数,用于执行
该函数可以使用类似于匿名内部类的方式指定,如
History
History:历史记录对象
获取
使用window.history获取,其中window.可省略
方法
方法 | 描述 |
back() | 加载history 列表中的前一个URL |
forward() | 加载history 列表中的下一个URL |
Location
Location:地址栏对象
获取
使用window.location获取,其中window.可省略
属性
href | 设置或返回完整的URL |
如图,该行代码执行时会自动跳转到所写地址的网页
DOM
Document Objet Model : 文档对象模型
将标记语言的各个组成部分封装为对象
DOM 是 W3C(万维网联盟)的标准
W3C DOM 标准被分为3个不同的部分
1.核心DOM:针对任何结构化(标准语言)文档的标准模型
Document:整个文档对象
Element:元素(标签)对象
Attribute:属性对象
Text:文本对象
Comment:注释对象
2.XML DOM:针对HTML 文档的标准模型
3.HTML DOM:针对HTML 文档的标准模型
HTML DOM除包含核心DOM部分外,还将HTML 的标签都封装成了对象
JavaScript通过DOM,可以对HTML进行操作
改变HTML元素的内容
改变GTML元素的样式(CSS)
对HTML DOM事件作出反应
添加和删除HTML元素
获取Element对象
Element:元素(标签)对象
获取:使用Document对象的方法来获取
Document(文档对象):可以直接在JavaScript中使用,其获取Element对象的方法:
1.getElementById:根据id属性值获取,返回一个Element对象
2.getElementByTagName:根据标签名称获取,返回Element对象数组
3.getElementByName:根据name属性值获取,返回Element对象数组
4.getElementByClassName:根据class属性值获取,返回Element对象数组
注:在JavaScrpt中,数组也是用 var 关键字声明
Element对象的使用
Element对象一般配合 JavaScript 参考手册 文档使用,内有相关对象的属性和方法
事件监听
简介
事件:HTML事件是指发生在HTML元素上的“事情”。如:
按钮被点击
鼠标移动到元素上
按下键盘按键
事件监听:JavaScript可以在事件被侦测到时执行代码
事件绑定
方式一:通过HTML标签中的事件属性进行绑定
该方式中JavaScript 和 HTML 耦合在了一起,一般不使用
方式二:通过DOM元素属性绑定
一般使用该方法
常见事件
Event代表事件对象
正则表达式
正则表达式定义了字符串组成的规则
定义
一:直接量:注意不要加引号
要用两个/包裹规则,并以^开头,$结尾
二:创建RegExp对象
方法
test(string):判断指定字符串是否符合规则,返回 true 或 false