1 JavaScript概述
1.1什么是JS?
全称 JavaScript, 简称JS,绝大多数现代网站都使用了Javascript,并且所有的Web浏览器–基于桌面系统,游戏机,平板电脑和只能手机的浏览器—均包含了Javascript解释器。所以它使用最广泛的编程语言.
JS是一门基于对象和事件驱动的脚本语言,专门为网页交互而设计,主要应用在客户端(浏览器).
(1)基于对象
注意,不是面向对象,在JS中没有类的概念,也不是通过类创建对象,同时JS没有编译的过程,是一边解释,一边执行!
(2) 事件驱动
在JS中是通过事件触发机制来驱动函数执行,从而实现特定的功能
(3) 脚本语言
在网络前端开发环境下,运行在客户端浏览器中的一段小程序
1.2JS的特点
解释执行,不需要编译(JS没有编译的过程,是一边解释,一边执行!)
基于对象(不是面向对象)
弱类型的语言
1.3JS的优势
交互性 ;安全性 ;跨平台性
1.4JS的引入
1.4.1通过script标签嵌入JS代码
这个标签可以放在head或body或页面的其他位置中
1.4.2通过script标签引入外部的JS文件
注意: 这种引入方式, 不要在script标签书写任何JS代码
2 JS的语法
2.1JS注释的格式
单行注释: //注释内容
多行注释: /* 注释内容 */
注意: 多行注释不要嵌套!!
2.2数据类型
2.2.1基本数据类型
1.数值类型(number)
在JS中, 所有的数值在底层都是浮点型. 在需要的时候, 浮点型会和整型自动的进行类型的转换.
NaN(not a number), 表示非数字, NaN和任何数值都不相等, 包括他自己.
2.字符串类型(string)
在JS中, 字符串类型属于基本数据类型. 字符串常量可以用单引号或双引号引起来.
如:
var str1 = “hello JS…”; 或 var str1 = ‘hello JS…’;
3.布尔类型(boolean)
true或false
4.undefined
undefined类型的值只有一个, 表示如果声明了变量,但是没有为其赋值,该变量的值就是undefined. 即未定义或未初始化值.
var a; alert(a); //此处a的值为undefined
alert(b);//如果b没有声明, b的值为undefined
5.null
null类型的值也只有一个, 就是null, 表示空值.
可以用作函数的返回值, 表示函数返回的是一个空的对象.
2.2.2复杂数据类型
对象(函数/数组/普通对象)
2.3变量的定义
在JS中用var关键字来声明变量.
var str = “hello js…”;
在JS中变量不区分类型, 可以指向任意的数据类型, 因此称JS是一门弱类型的语言.
var str = “hello js…”;
str = 100;
str = true;
str = new Array();
2.4运算符
JS中的运算符和Java中的大致相同.
(1)== 和 === 的区别
两个等号, 在进行比较时, 如果两边的值不是同一种类型, 会自动转成同一种类型在进行比较.如果内容相同, 也会返回true.
三个等号, 在进行比较时, 如果两边的值不是同一种类型, 直接返回false. 如果值是同一种类型, 内容相同才会返回true.
(2)typeof 用来返回变量或表达式的数据类型
在JS中, 由于变量不区分类型, 如果需要返回变量或表达式的数据类型, 可以通过typeof关键字来实现.
typeof不是函数, 而是一个运算符!
(3)delete 用来删除数组中的元素, 或者对象上的属性或方法
2.5语句
JS中的语句和Java中的大致相同
2.5.1if…else
需要注意的是: 在JS中,除了0,NaN和空字符串“
”,其他字符串都可以自动转成布尔类型的true。if语句的判断条件可以不是boolean值, 如果值是别的类型,
会自动转换成boolean类型.
2.5.2switch
2.5.3循环语句
1.while循环
2.for循环
2.6数组
2.6.1通过Array构造函数创建数组
2.6.2通过数组直接量创建数组
2.6.3常用属性和方法
1.length属性
length属性用来返回数组的长度
JS中可以通过操作数组的length属性改变数组的长度
2.常用的方法
(1)push方法
(2)pop方法
(3)unshift方法
(4)shift方法
(5)reverse方法
(6)sort方法
2.7函数
2.7.1通过function关键字声明函数
2.7.2通过函数直接量声明函数
需要注意的是: 在调用函数时, 如果传入的参数和需要传的参数个数不匹配, 仍然可以调用函数.
2.8对象
2.8.1JS中的内置对象
1.String对象
(1)length属性 – 返回字符串的长度
(2)charAt方法 – 返回指定索引处的字符
(3)indexOf方法 – 根据子字符串到字符串进行查找, 返回子字符串第一次出现的位置.
(4)lastIndexOf方法 – 根据子字符串到字符串进行查找, 返回子字符串最后一处的位置.
(5)match方法 – 根据正则表达式到字符串中进行匹配, 返回包含所有符合正则表达式的子字符串的数组
(6)replace方法
(7) search方法 – 根据正则表达式到字符串中进行匹配, 返回第一次出现的位置.
(8) split方法 – 根据指定的字符切割字符串, 返回一个数组
(9) slice方法 – 从start开始截取, 截取到end这个位置.(包含start, 不包含end)
(10) substr方法 – 从start开始截取, 截取指定长度的字符串
(11) toLowerCase – 转小写
(12) toUpperCase – 转大写
2.Array对象
3.Date对象
(1)方式一
var date1 = new Date();//表示当前时间
alert(date1.toLocaleString());
(2)方式二
var date2 = new Date(1000*3600);//1970-1-1
alert(date2.toLocaleString());
(3)方式三
//月份是从零开始, 0表示1月, 11表示12月
var date3 = new Date(2017,10,11);
alert(date3.toLocaleString());
//获取年份
alert(date3.getFullYear());//2017
//获取月份
alert(date3.getMonth());//10(11月)
//获取哪一天
alert(date3.getDate());//11
//获取星期几
alert(date3.getDay())//6
4.Math对象
Math.PI – 返回圆周率
Math.ceill – 向上取整, 如Math.ceil(123.45) //124
Math.round – 四舍五入, 如Math.round(123.45) //123
Math.floor – 向下取整, 如Math.floor(123.78) //123
Math.random – 获取一个伪随机数(0~1之间的浮点数)
5.Global对象
Global表示全局对象, 可以直接调用其属性或方法(不需要加对象点);
parseInt(); – 将传入的值转成整数, 如: parseInt(“123.45”) – 123
parseFloat();–将传入的值转成浮点数, 如: parseFloat(“123.45”) – 123.45
isNaN(); – 判断一个值是否是非数字, 如: isNaN(“123”);//false; isNaN(“abc”);//true
eval(); – 将一段字符串按照JS代码来解释执行.
6.RegExp对象
(1)方式一
Var reg1 = new RegExp(“^\w+@\w+(\.\w+)+$”);
(2)方式二
var email = “abc123@163.com”;
//abc123@sina.com.cn
var reg2 = /^\w+@\w+(.\w+)+$/;
(3)test方法, 用来检测字符串是否符合该正则表达式, 符合返回true, 不符合返回false
//^和$是开始和结束标记, 表示整个字符串都符合该正则表达式时才会返回true
alert(reg2.test(email));
(4)标识符
i – ignoreCase 表示忽略大写
g – global 表示全局查找
2.8.2自定义对象
方式一:
function Person(){}
var p1 = new Person();
p1.name = “张飞”;
p1.age = 18;
p1.run = function(){ alert(“running…”) }
方式二:
var p2 = {
“name” : “赵云”,
“age” : 18,
“run” : function(){
alert(“running…”);
}
}
总结:
重点:JS的引入,数组的属性和方法,函数声明的两种方式,JS中的内置对象属性及方法的使用