函数
// 自调用
(function fun (){
console.log(1111);
})();// 记得加分号
// 匿名函数
(function (){
console.log(222);
})()
var a = function(){}
// 箭头函数 ES2015新增的(ES6)
// 1.如果形参只有一个 那小括号可以省略
// 2.如果{}里只有一条语句,大括号可以省略
var f = (a,b) =>{
console.log(a,b);
}
f (1,2)
// 复原
var result = index=>index + 1;
function result(index){
index+1
}
function outer(){
// 函数执行的宿主环境,如果hi是全局,那就是null
console.log(outer.caller)
inner()
console.log();
}
function inner(){
// 函数身上有个caller ,inner在outer里调用,他的宿主环境是outer
console.dir(inner);//outer函数
console.log(arguments.callee);// 函数本身
}
outer()
数组
// 数组(Array)是一个有序集合,里面每一个用逗号隔开的叫元素
// 每一个元素都有自己的位置,叫下标也叫索引(0~n)
// 元素可以是任意类型
[1,2,3][1,"2",{3:4}]
// 数组直接量创建数组
var ary2 = [1,2,3];
// 读取数组的元素,通过下标
console.log(ary2);//拿到3
//数组有一个内置的属性length,属性值存的是数组的元素个数(长度)
for (var i = 0;i<ary2.length;i++){}
// 获取数组的最后一个元素
console.log(ary2.length-1);
// 如果ary[不存在的下标]得到的是undefined
console.log(ary2[5]);
// length不是只读,也是可以修改
varary = [1,2,3];
ary[ary.length]=4//得到[1,2,3,4]
// 循环/遍历/迭代一个数组
// for in
var ary1=[1,2,3];
var ary2=[4,5,6];
for (var i in ary2){
console.log(ary2[i]);
}
// 字符串和数组有点像
var str ="今天 学的东西 有点多";
console.log(str.length);// 得到内容的长度
console.log(str[str.length-1]);// 得到“多”空格得到空字符
数组方法
/*
1.push()
作用:在一个数组的末尾追加元素
参数:你追加的东西
返回值:新数组的长度
是否改变原数组:改变
*/
var oldAry = [1,2,3];
var returnValue = oldAry.push(4);
console.log(oldAry,returnValue);// ['1','2','3','4']
/*
2.pop()
作用:删除末尾的最后一个
参数:没有
返回值:被删除的元素
是否改变原数组:改变
*/
var oldAry = [1,2,'删我'];
var returnValue = oldAry.pop();
console.log(oldAry,returnValue);// [1,2] '删我'
/*
3.shift()
作用:删除数组的第一个
参数:没有
返回值:删除的那一项
是否改变原数组:改变
*/
var oldAry = ['第一个',2,3];
var returnValue = oldAry.shift();
console.log(oldAry,returnValue); // [2,3]'第一个'
/*
4.unshift()
作用:在数组前面追加元素
参数:追加的东西
返回值:原数组
是否改变原数组:改变
*/
var oldAry = ['red','blue','green'];
var returnValue = oldAry.unshift('pink','black');
console.log(oldAry,returnValue); // ['pink','black','red','blue','green']
/*
5.reverse()
作用:把数组里翻转
参数:没有
返回值:一个新数组
是否改变原数组:改变
*/
var oldAry = ['red','blue','green'];
var returnValue = oldAry.reverse();
console.log(oldAry,returnValue); // 一个新数组(翻转后的)
/*
6.sort()
作用:排序
参数:没有或者是一个函数
返回值:一个新数组
是否改变原数组:改变
*/
var oldAry = [3,1,5];
var returnValue = oldAry.sort();
console.log(oldAry,returnValue); // 拍完后的一个新数组
// 排10以上的,需要传参
var oldAry = [3,1,5,11,20];
var returnValue = oldAry.sort(function(a,b){
returna-b;// 升序
returnb-a;// 降序
});
console.log(oldAry,returnValue);
//回调函数:1.函数是你定义的 2.你没有调用 3.但是这个函数却执行了
/*
7.splice()
作用:增删改一体化
参数:多个
返回值:删除的元素(用数组装的)
是否改变原数组:改变
*/
var oldAry = [3,1,5,11,20];
// 1.删除 必须要有2个参数
// 第一个参数表示从哪里开始删,第二个表示删几个
var returnValue = oldAry.splice(0,3);
console.log(oldAry,returnValue);
// 2.新增得3个参数
var returnValue = oldAry.splice(0,0,4);
console.log(oldAry,returnValue);
// 3.修改(删除的个数和新增的个数可以不一致)
var oldAry = [1,2,3,4,5,6];
var returnValue = oldAry.splice(0,3,7,8,9);// 删除3个,增加7,8,9
console.log(oldAry,returnValue);
/*
8.slice()
作用:截取你选中的特定的内容
参数:1个或两个
返回值:截取的数组
是否改变原数组:没有
*/
var oldAry = [1,2,3,4,5];
// 如果没有参数或者参数只有一个(0),表示把原数组复制一份
var returnValue = oldAry.slice(2);
console.log(oldAry,returnValue);
// 两个下标,表示开始到结束,包含开始不包含结束
var returnValue = oldAry.slice(0,3);
console.log(oldAry,returnValue);
/*
9.concat()
作用:实现多个数组或者值的拼接
参数:值或者是数组
返回值:拼接完的数组
是否改变原数组:没有
*/
var oldAry = [1,2,3,4,5];
var addAry = [9,9,9];
var returnValue = oldAry.concat([6,7,8]);
var returnValue = oldAry.concat(6,7,8);
var returnValue = oldAry.concat(addAry);
console.log(oldAry,returnValue);
/*
10.toString()
作用:把数组转换成字符串
参数:没有
返回值:字符串
是否改变原数组:不改变
*/
var oldAry = [1,2];
var returnValue = oldAry.toString();
console.log(oldAry,returnValue);
/*
11.join()
作用:用指定的字符拼接
参数:字符
返回值:拼接完的字符串
是否改变原数组:不改变
*/
var oldAry = [1,2,3,4];
var returnValue = oldAry.join('-');
console.log(oldAry,returnValue);
12.indexOf/lastIndexOf()
作用:检索某一项是否出现在这个数组中
参数:(m,n)
返回值:布尔值
是否改变原数组:没改变
*/
// indexOf (第一次出现)
// 第一个参数 你要检测的项
// 第二个参数 从哪个位置开始检索
varoldAry = [1,2,3,4,1,1,1];
varreturnValue = oldAry.indexOf(1,1);
console.log(oldAry,returnValue); // 原数组 4
// lastIndexOf(最后一次出现的位置)
// 第一个参数 你要检索的项
// 第二个参数 到哪个位置检索
// 如果没有找到返回是-1
varoldAry = [1,2,3,4,1,1,1];
varreturnValue = oldAry.lastIndexOf(1,5);
console.log(oldAry,returnValue); // 原数组 4