1.组成:
BOM-浏览器对象模型: 通过BOM可以操作浏览器窗口,如:弹框,浏览器的跳转等
DOM-文档对象模型: 把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作
2.变量: 声明: var 变量名;
3.数据类型:
Number:数值的固定值表示法
注:
// 结果不是0.3,即算术计算时其精确度远远不如整数,所以尽量不要判断两个浮点数是否相等
var result = 0.1 + 0.2;
/*
数值判断:
NaN(not a number):与任何值都不相等(包括自身)
isNaN(is not a number)
*/
String:字符串类型(可用单引号,也可用双引号)
Boolean:布尔类型
undefined:表名一个声明了但是没有赋值的变量,即变量只进行声明,其默认值是undefined
Null:表示空,如果一个声明的变量想让其值为null,则需手动设置
Object:
注:
a.typeof: 获取变量的类型
var age=10;
console.log(typeof age);// number
b.toString(): 转成字符串类型
var num=10;
console.log(num.toString());
/*
转成字符串类型其他方法:
拼接: 如 num+"";
如果是undefined和null,可以使用String()方法代替
*/
c.Number(): 转成数值类型
/*
Number()可以把任何类型的值转为数值类型 注:如果被转换的字符串中有一个不是数值的字符,返回NaN
其他转数值方法:
parseInt() 注:如果第一个字符是数字会解析知道遇到非数字结束;如果第一个不是数字,返回NaN
*/
d.Boolean(): 转成布尔类型
注: 0 ' '(空字符串) null undefined NaN会转成false,其余都是true; (隐式转换)
var flag=!!'123';//隐式转换成布尔类型
4.运算符:
关系运算符:
== 和 === 的区别:前者只比较值; 而后者既比较值也比较类型,都相等时,才相等
5.流程控制:(与Java类似)
顺序结构、分支结构、循环结构
6.数组:
定义:
var attr1=[];//空数组
//数组中的元素可以放置任何类型,但是必须类型相同
var attr2=[1,2,3]
/*
通过Array创建
*/
var attr = new Array();
获取元素:
//通过下标获取元素
attr2[0]; // 1
attr2[1]; // 2
遍历数组:
新增元素:
// 数组名[下标]=值;
var attr3=[1,2,3];
attr3[0]=5;//将第一个元素1换成5
attr3[3]=10;//新增一个元素10
常见方法:
var attr = [1,2,3,5,9,0];
//排序
attr.sort();
attr.reverse();// 翻转数组
//操作方法
concat(参数1,...); //把参数拼接到当前数组
//从当前数组中strat开始,end结束,截取一个新的数组,不影响原来的数组
slice(start,end);//区间索引的值
//位置方法
indexOf();//找位置 返回索引值 没有找到返回 -1
清空数组:
//方法一:推荐使用
attr = [];
//方法二:
attr.length = 0;
//方法三:
attr.splice(0,arr.length());
7.函数:
函数声明: 函数声明的时候,函数体并不会执行,只要当函数被调用的时候才会执行
function 函数名([形参1, 形参2, 形参3...]){//形参可有可无
//函数体
}
//函数表达式
var fn=function(){
//函数体
}
//调用函数
函数名([形参1, 形参2, 形参3...]);//函数的调用结果就是返回值
8.对象: 特征在对象中用属性来表示; 行为在对象中用方法来表示
创建对象的方式:
对象字面量:
var user = {
name: 'admin',
age: 18,
sex: true,
sayHi: function () {
console.log(this.name);
}
};
new Object():
var person = new Object();
person.name = 'admin';
person.age = 18;
person.play = function(){
console.log("person play");
}
工厂函数创建:(推荐)
function person(name,age,job){
var person = new Object();
person.name = name;
person.age = age;
person.job = job;
person.play = function(){
console.log("person play");
}
return person;
}
//调用
var user = person('张三',18,'teacher');
自定义构造函数:(推荐)
function Person(name,age){
this.name = name;
this.age = age;
this.play = function(){
console.log("person play");
}
}
var user = new Person('admin',18);
常见内置对象:
Math对象:
//属性:圆周率
console.log(Math.PI);
//方法
console.log(Math.random());//随机数
console.log(Math.floor());//向下取整 向上取整:Math.ceil()
console.log(Math.round());//取整(四舍五入)
console.log(Math.abs());//绝对值
console.log(Math.max());//最大值
console.log(Math.min());//最小值
console.log(Math.pow());//指数次幂
console.log(Math.sqrt());//平方根
Date对象:
//创建时间对象
var date = new Date();
//获取日期的毫秒形式
date.valueOf()
//获取日期指定部分
getTime() //同valueOf()
getMilliseconds()
getSeconds() // 返回0-59
getMinutes() // 返回0-59
getHours() // 返回0-23
getDay() // 返回星期几 0周日 6周6
getDate() // 返回当前月的第几天
getMonth() // 返回月份,***从0开始***
getFullYear() //返回4位的年份 如 2016
Array对象: 用于创建数组
数组中常见的方法:
forEach:遍历
var arr = [1,2,3,4,5];
arr.forEach(function(item,index){
//forEach 遍历数组,第一个参数是数组中的元素,第二个参数是数组元素的下标
console.log(item+":"+index);
})
filter:对数组中的元素进行过滤筛选,只能读取原数组中的数据,不能改变原数据
var attr = ['aa','bbb','cccc','ddddd'];
/*
通过filter,返回布尔类型,为true时,对应的元素留下,反之过滤
*/
var newAttr = attr.filter(function(item,index){
if(index>2){//返回下标大于2的元素
return item;
}
})
console.log(attr);
console.log(newAttr);
map:可以对原来的元素进行修改等操作,然后返回一个新的数组对象
String对象:(同Java)