匿名函数: 一个函数没有名字
function(){}
用于:
1. 匿名函数创建函数--函数表达式
var fn=function(){};
此时的变量名 就是函数名了.
函数表达式不存在函数的提升,最多存在变量声明的提升.
2. 匿名函数的自调用,
作用:创建一个作用域,防止污染全局(这样里面的变量和函数可以随便写,不会对其他造成影响)
写法:
(function(){ 函数体})()
3. 匿名函数作为 回调函数来使用
fn(function(){ 函数体})()
回调函数,可以传递多行语句
4. 全局函数:
可以在任何函数使用
parseInt /parseFloat/encodeURI/decodeURI
判断一个值是否为NaN
isNaN()
判断一个值是否为有限值
isFinite()
执行字符串内部的计算, 常用与页面数据的处理
eval()
对象中分为三类:
内置对象
宿主对象
自定义对象
对象字面量/对象直接量
{name:'tom'}
内置构造函数
new Object()
自定义构造函数(后面讲)
对象.属性名
对象['对象名']
例如: console.log()
num.toString()
'a'.charCodeAt()
for(var key in 对象){
对象[key]
}
对象中的方法
// 写在对象中的方法, 这样写
{
say:function(){
this.name
}
}
一般方法
var say=function(){}
(1) 对象.属性名=== undefined 存在-->返回false ,不存在--->false
(2) 对象.hasOwnProperty('属性名') 存在-->true,不存在 -->false
(3) 使用 in 关键字来判断 '属性名' in 对象 存在 -->true 不存在--->false
var person={
name:'tom',
age: 20
}
//检测对象中是否含有某个属性
console.log(person.name===undefined);
// js自己提供的方法
console.log(person.hasOwnProperty('score'));
// 使用 in
console.log('name' in person);
有多个元素组成的集合, 每个元素就是一个数据.
创建数据组
var num=[元素1,元素2,元素3...];
//创建一个空数组
var emp=[];
console.log(emp);
*/
var emp=['tom','kate','king',12,true,null,undefined];
console.log(emp);
注: 数组中可以放任意类型的元素,但是,一般我们都是放入同一种类型的元素.
(1-2) 数组的访问
下标从0 开始,如果下标越界, 返回值是 undefined
console.log(emp[1]); //'kate'
(1-3) 修改元素
emp[4]='jerry';
(1-4) 添加下变为5 的元素
emp[6]='sir'
var city=['长沙','武汉','洱海','布达拉宫'];
city[2]='北京';
city[4]='南京';
console.log(city);
new Array(元素1, 元素2,...)
new Array(3); 初始化数组的长度为3,可以添加更多的元素
//通过构造创建空数组
var course=new Array();
var course=new Array('mysql','javascript','nodejs');
console.log(course);
var course2=new Array(3);
course2[0]='html';
course2[1]='ajax';
course2[2]='css';
course2[3]='bootstrap'
console.log(course2);
数组.length 返回数组中的个数,
可以使用它在数组的末尾添加新元素
数组[数组.length]=值;
练习: 创建一个空数组,使用数组的长度添加多个国家的名称.
var country=[];
country[country.length]='中国';
country[country.length]='美国';
country[country.length]='英国';
console.log(country);
补: 数组也是对象
数组的下标能用字符串吗?
数组分为 : 索引数组 关联数组
索引数组: 以0 开始的整数作为下标
关联数组: 以字符串作为下边
关联数组中的元素, 只能单独添加, 一般很少用, 因为这种形式会被对象代替
// 关联数组
var person=[];
person['name']='tom';
person['age']=18;
person['sex']='男'
console.log(person);
练习: 创建一个关联数组, 包含图书的编号,标题,作者,价格
var books=[];
books['id']=1002;
books['title']='玉女三千';
books['author']='张武店';
books['price']=558;
console.log(books);
(1) 通过 for- in 来遍历索引数组和关系数组.
(2) 只能使用for循环来遍历索引数组, 关联数组不行
注: 一般 索引数组,使用for 循环就可以了
关联索引 使用for -in来遍历.
var books=[];
books['id']=1002;
books['title']='玉女三千';
books['author']='张武店';
books['price']=558;
console.log(books);
for (var key in books ){
console.log(key);
console.log(books[key]);
}
//练习: 创建函数,传递一个参数(一组工资),返回平均工资
function getAvg(salary){
for (var i=0,sum=0;imax){
max=salary[i];
}
}
return max;
}
var salary=[99,56,456,233,78,45];
console.log(getMax(salary));
将数组转为字符串
toString()
将数组中的元素按照逗号分隔转为字符串
join('-')
将数组中的元素按指定的字符分隔转为字符串
将两个数组合并到一起
concat(arr2,arr3)
拼接多个数组
截取数组中的元素
slice(start,end)
截取数组中的元素, start 是开始的下标,end 是结尾的下标
含头不含尾, 如果是负数, 表示是倒数
删除数组中的元素 (删除, 插入, 替换)
aplice(start,count,value1,value2...)
删除数组中的元素,start开始的下标,count删除的长度(个数),
value 删除后添加的元素,如果 count 为空删除到最后; start为负数表示倒数.
翻转数组中的元素
reverse()
翻转数组中的元素
对数组中的数据排序
sort() 默认升序
如果是字符串: 默认的是Unicode码来排序
对数字排序
sort(function(a,b){
return a-b;// 从小到大
return b-a;//从大到小
})
在数组的末尾操作数据
数组.push("数据"); 返回数组的长度
删除
数组.pop(); 把最后一个拿出来, 返回删除的元素.
在数组的头部操作数据
数组.unshift('数据') ;在开头添加数据, 返回数组的长度.
删除第一个
数组.shift() 删除头部,返回被删除的数据
学习 api 注意事项
1.作用 , 2.需要多少参数,3.返回值
//将数组转为字符串
var arr=['tom','jerry','king'];
// toString() 默认按照逗号组成字符串
var str=arr.toString();
// 按照指定的符号组成字符串
var str2=arr.join('-');
console.log(str2,typeof str2);
// 拼接多个数组
var arr1=['html','css'];
var arr2=['js','nodejs','ajax'];
var arr3=['vue','react'];
console.log(arr1.concat(arr2,arr3));
// 截取数组中的元素
var arr=['html','css','js','nodejs','ajax'];
console.log(arr.slice(2));
console.log(arr.slice(2,4));
console.log(arr.slice(-1));
// 练习: 创建数组a-g, 每个字母是一个元素,
// 分别截取 cd,f,b, 组成一个新数组
*/
var s=['a','b','c','d','e','f','g'];
var s1=s.slice(2,4);
var s2=s.slice(6,7);
var s3=s.slice(-6,-5);
console.log(s1);
console.log(s1.concat(s2,s3));
// 删除, 插入, 替换
var arr=['html','css','js','nodejs','ajax'];
var t=arr.splice(2,2);
console.log(arr.splice(1,2,'东吴','html5'))
console.log(arr.splice(3,0,'bootstrap'));
console.log(t)
console.log(arr);
//练习: 创建数组a-h,每个字母是一个元素
// 删除 d,e 替换f为m,在下标为2的位置添加字母z
var s=['a','b','c','d','e','f','g','h'];
s.splice(3,2);//abcfgh
s.splice(-3,1,'m');
s.splice(2,0,'z');
console.log(s);