javascript是最流行的,而且是唯一的写"前端脚本"的编程语言。
JS主要有两部分组成:变量和函数。
js数据类型分为二大类: 原始类型与引用类型;;js不允许自定义数据类型,因为js是动态的,可以模拟出任何类型,不需要自定义
(2). 原始类型: String字符串;Number数值(不区分整数和浮点数);Boolean布尔;Undefined未定义;Null类型
(3). 引用类型:[Object对象,;Array数组]重点掌握;Function函数; Date日期;RegExp正则; 包装对象...
JS中:用户生函数,函数生对象,对象生万物。 一切皆对象。
JS中函数分类:
函数声明:函数声明自动提前:因为函数如此重要,所以函数声明会自动提升到代码最前面,不论在脚本的什么地方声明,都可以直接使用。外部声明的变量,函数内部可以使用;函数内部声明的变量,外部不能使用。
函数表达式:函数表达式就是一个值:let fn = function(){ return 200; }
匿名函数:匿名函数主要用于函数的传参。eg: [1,2,3,4].filter(function( item, index, array){ return item>3; }) 返回[4]
filter是一个数组过滤函数,会为每一个数组元素执行该方法,返回过滤后的数组;item必填,是当前数组元素的值,index是元素的索引,array是当前元素属于的数组对象。
自执行函数:eg: ( function( a, b ){ return a+b; } )(20, 50): 直接就将20与50传参给了a和b。
js根本不在乎函数有没有参数,以及参数有多少,是什么类型;
因为在内部是使用一个数组来接收这些参数,并使用对象 arguments 来访问这个数组。
//声明 function add() { var num = arguments.length switch (num) { case 0: return '至少要有一个参数' break case 1: return arguments[0] break case 2: return arguments [0]+arguments[1] break case 3: return arguments[0]+arguments[1]+arguments[2] break default: return '参数过多' } } //调用 add() // '至少要有一个参数' add(100) // 100 add(100,200) // 300 add(100,200,300) // 600 add(100,200,300,400) // '参数过多'
点击 "运行实例" 按钮查看在线实例
创建新数组
(1):基于当前数组中的所有项,创建一个新数组: concat()
var arr = [1,2,3]
arr.concat(4,5) // 返回5个元素的新数组:[1, 2, 3, 4, 5]
arr.concat([6,7,8]) // 接受数组参数,这个数组会拆开,将每一个元素并入原数组中:[1, 2, 3, 6, 7, 8]
(2).基于数组的开始与结束的位置来创建: slice() 单词本意: 切开
slice(起始索引[,结束索引]),如省略结束索引,默认为后面全部数据
var arr = [10,20,30,40,50]
arr.slice(2) // 从索引2开始,获取后面全部内容: [30, 40, 50]
arr.slice(1,4) // 从索引1开始,到索引4结束(不含索引4): [20, 30, 40]
(3).向数组中间插入数据: splice(), 功能主要是: [删除,插入,替换]
参数说明: splice(start,length,value...)
1). 删除
arr.splice(起始,删除数)
var arr = [10,20,30,40,50]
arr.splice(0,2) // 从头部0,开始删除2个,返回删除的元素: [10, 20]
2). 插入
arr.splice(起始,0,要插入项)
arr.splice(1,0,88,99) //第二个参数0,表示插入,插入的数据是第三个参数
//本例是从第二个元素起,插入二个新元素:88,99:
arr // 查看当前数组: [30, 88, 99, 40, 50]
3). 替换
arr.splice(起始,删除数,要插入项)
arr.splice(2,1,'dog','cat') // 返回删除项: 99
arr // 查看数组: [30, 88, "dog", "cat", 40, 50]
数组的反转:arr.reverse()
数组的排序:sort():
var arr = [10,4,22,8,2]
arr.sort() // [10, 2, 22, 4, 8]:显然错误,因为sort()默认将元素视为字符串,'10'显然是小'2'
//解决方案: sort()可接受一个回调参数,在回调函数中进行比较运算完成正确排序
function compare(val1,val2){
if (val1 < val2) {
return -1
} else if (val1 > val2) {
return 1
} else {
return 0
}
}
***对于数值型元素的比较,这个回调函数可以进行简化:
function compare(val1,val2) {
return val - val2 //升序
}
arr.sort(compare) // 输出正确结果:[2, 4, 8, 10, 22]
//如果改为降序排列,只需要改变回调中的返回值即可
function compare(val1, val2) {
return val2-val1 //降序: 用第二个参数减去第一个参数即可
}
arr.sort(compare) // 降序: [22, 10, 8, 4, 2]