1.数组
1.1 数组定义
数组:
(Array)是一种可以按顺序保存数据的数据类型
使用场景:
如果有多个数据可以用数组保存起来,然后放到一个变量中,管理非常方便
1.2数组的基本使用
1.2.1数组声明
声明语法:
let 数组名 = [数据1,数据2,...,数据n]
注:
数组是按顺序保存,所以每个数据都有自己的编号
计算机中的编号从0开始,即数据1的下标为0
在数组中,数据的编号也叫索引或下标
数组可以存储任意类型的数据
1.2.2 数组取值
取值语法:
数组名[下标]
注:
数组取值通过下标取数据
取出来是什么类型的,就根据这种类型特点来访问
1.2.3 一些术语
元素:数组中保存的每个数据都叫元素
下标:数组中数据的编号
长度:数组中元素的个数 数组名.length
1.2.4 遍历数组
一般用for循环遍历数组
let arr1 = [1,3,'ImmortalsK',true] let i for(i = 0;i<arr1.length;i++){ console.log(arr1[i]) }
1.3 操作数组
1.3.1 新增数据
数组.push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的长度
//数组.push一个或多个添加到末尾,并返回数组长度 ********* let number = arr1.push('1',6,9); console.log(number) for (i = 0 ;i<arr1.length;i++){ console.log(arr1[i]) }
数组.unshift 将一个或多个元素添加到数组的开头,并返回数组的新长度
//新增开头,返回数组长度 let number1 = arr1.unshift('red',1,6,'天霸动霸tua'); console.log(number1) for (i = 0 ;i<arr1.length;i++){ console.log(arr1[i]) }
1.3.2删除数据
数组.pop() 方法从数组中删除最后一个元素,并返回该元素的值
//删除 pop 删除最后一个并返回删除的值 console.log(arr1.pop()); console.log(arr1)
数组.shift() 方法从数组中删除第一个元素,并返回该元素的值
console.log(arr1.shift()); console.log(arr1)
数组.splice() 方法删除指定元素 参数: 起始位置(从0计数),要移除的个数默认到最后
// splice 删除指定元素 起止位置(索引号) + 删几个 *********** arr1.splice(0,2) console.log(arr1)
1.3.3数组排序
数组.sort()
//数组排序 .sort 默认升序 let arr = [1,5,6,8,9,2,3,4,10,7] arr.sort()
下面需要具体了解函数
sort 升序:
//升序 arr.sort(function (a, b) { return a - b }) console.log(arr)
sort 降序:
//降序 arr.sort(function (a, b){ return b - a }) console.log(arr)
2.函数
2.1 函数
函数:function 是被设计为执行特定任务的代码块
作用:
可以实现代码复用,提高开发效率
细节:
- 两个相同的函数后面的会覆盖前面的函数
- 在Javascript中 实参的个数和形参的个数可以不一致
如果形参过多 会自动填上undefined
如果实参过多 那么多余的实参会被忽略 (函数内部有一个arguments,里面装着所有的实参
- 函数一旦碰到return就不会在往下执行了 函数的结束用return
2.2 函数的使用
声明:
function 函数名(){ 函数体 }
命名规范:
和变量名基本一致
尽量使用小驼峰式命名法
前缀应该为动词
命名建议:常用动词约定
例:
求和 getSum
|------|-------------|
| 动词 | 含义 |
| can | 判断是否可执行某个动作 |
| has | 判断是否含有某个值 |
| is | 判断是否为某个值 |
| get | 获取某个值 |
| set | 设置某个值 |
| load | 加载 |调用方法:
函数名() 注:函数只要在被调用时才会被执行
2.3 函数的传参
调用函数处是实参,函数声明时是形参
函数传参声明
function calculate(start = 0,end = 0){//形参,多个数据用逗号隔开 可以给默认值 不给默认为undefined }
函数传参调用语法
// 实参需要声明变量 //调用函数时,需要传入几个数据就写几个,用逗号隔开 calculate(start,end) //实参
注:
开发中尽量保持形参和实参个数一致
函数传递参数可以极大的提高了函数的灵活性
2.4 函数的返回值
返回值 定义:当调用某个函数,这个函数会返回一个结果出来,这个结果就是返回值,这就是有返回值的函数
注:
函数的返回值需要根据需求来确定
用retuen返回,returen下面的代码不再执行
return函数可以没有 return,这种情况函数默认返回值为 undefined
2.5 匿名函数
函数分为 具名函数和匿名函数
具名函数 有函数名,调用时是函数名+(参数)
匿名函数,没有名字的函数,无法直接使用 在web API的事件委托中经常用
匿名函数使用方式: 函数表达式,立即执行函数
函数表达式 :将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式,调用时就是变量名+()
let f2 = function () { console.log('1433223') } f2()
立即执行函数:
避免全局变量之间的污染
无需调用,立即执行,其实本质已经调用了
多个立即执行函数要用:隔开,不然会报错
方法1:()() 在第一个小括号里面写匿名函数 (function () {
})()
方法2 先() 在括号里面写函数 (function () {
}),并在加个小括号来调用(function () {} ())
//立即执行函数 立即执行函数的函数名也可以起名字 (function (x,y) { console.log(x + y) })(3,5); //立即执行函数第二种写法 (function (x,y) { console.log(x + y) }(7,8)); //两个立即执行函数之前要加;
2.6 作用域
根据作用域不同 JS中分为全局变量 ,局部变量
全局变量:函数外部声明 的变量,在任何区域内都可以访问和修改
局部变量:函数内部声明的变量,只能在当前函数内部访问和修改
注:
在不同作用域下,发生变量命名冲突的情况时,根据就近原则来执行
变量访问的原则: 在能够访问到的情况下 先局部, 局部没有在找全局
3.对象
3.1 对象含义
对象 object :JavaScript里的一种数据类型
定义: 无序的数据集合,用来描述某个事物 其具有属性和方法
注:数组是有序的数据集合,对象和数据不一样
3.2 对象使用
对象的声明:
let 对象名 = {} 或者 let 对象名 = new Object()
例如:
let obj = { name: '温小仙', age:'20', phone:'1233211234567' }
对象具有属性和方法
3.2.1 属性和方法
数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
如上面对象声明的name,age,phone
注:
属性都是成 对出现的,包括属性名和值,它们之间使用英文 : 分隔
多个属性之间使用英文 , 分隔
属性就是依附在对象上的变量(外面是变量,对象内是属性)
属性名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
let goods = { 'goods-name': '小米', num: '100012816024', weight: '18kg', address: '中国大陆' }
查询'goods-name'这个时
//如果属性名带字符串 forin遍历时就会用上 console.log(goods['goods-name']) //forin 循环遍历对象时 // k就是属性名,是字符串形式 for (let k in goods) { console.log(k) console.log(goods[k]) }
方法:数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数
//对象里面带方法 let singer = { name: '刘德华', //方法 song: function (x,y){ console.log(this.name + `唱${x}和${y}歌`) } } singer.song('冰雨','爱你一万年')
注:
方法是由方法名和函数两部分构成,它们之间使用 : 分隔
多个属性之间使用英文 , 分隔
方法是依附在对象中的函数
方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
可以添加形参和实参
3.2.2增删改查
查: 语法:对象名.属性
let goods = { 'goods-name': '小米', num: '100012816024', weight: '18kg', address: '中国大陆' } //查 console.log(goods.address)
改: 对象名.属性 = 新值
let goods = { 'goods-name': '小米', num: '100012816024', weight: '18kg', address: '中国大陆' } //改 goods.name = '红米'
增:对象名.新属性 = 新值
let goods = { 'goods-name': '小米', num: '100012816024', weight: '18kg', address: '中国大陆' } //增 goods.price = '1888元'
注: 增和改 区别 如果对象里面有该属性那么就是改,没有就是增
删: delete 对象名.属性
let goods = { 'goods-name': '小米', num: '100012816024', weight: '18kg', address: '中国大陆' } //删 delete goods.weight
3.3 遍历对象
方法: forin
let goods = { 'goods-name': '小米', num: '100012816024', weight: '18kg', address: '中国大陆' } for (let k in goods) { console.log(k) console.log(goods[k]) }
注:
一般不用这种方式遍历数组、主要是用来遍历对象
for in语法中的 k 是一个变量, 在循环的过程中依次代表对象的属性名 k是字符串
由于 k 是变量, 所以必须使用 [ ] 语法解析
k 是获得对象的属性名, 对象名[k] 是获得 属性值
3.4 内置对象
是什么 :JavaScript内部提供的对象,包含各种属性和方法给开发者调用。例如document.write() , console.log()。
3.4.1 内置对象-Math
Math对象是JavaScript提供的一个"数学"对象,提供了一系列做数学运算的方法
Math对象包含的方法有:
random:生成0-1之间的随机数(包含0不包括1)
ceil:向上取整
floor:向下取整 类似 parseInt
round: 四舍五入到距离最近的整数
max:找最大数
min:找最小数
pow:幂运算
abs:绝对值
向上取整 ceil
console.log(Math.ceil(1.1))//2
向下取整 floor
console.log(Math.floor(1.9))//1
四舍五入到距离最近的整数 round
console.log(Math.round(1.49))//1 console.log(Math.round(1.5))//2 console.log(Math.round(-1.5))//-1 console.log(Math.round(-1.51))//-2
找最大数 max
console.log(Math.max(1,3,8,6,8,9,10))//10
找最小数 min
console.log(Math.min(1,3,8,6,8,9,10))//1
幂运算 pow
// 前底后指 console.log(Math.pow(2,3))//8
绝对值abs
console.log(Math.abs(-10))//10
生成0-1之间的随机数 random
生成0-1之间的数 左闭右开 console.log(Math.random()) //如果要0-10之间的随机整数 console.log(Math.floor(Math.random()*(10+1))) //5-10之间的随机整数 console.log(Math.floor(Math.random()*(5+1))+5) /*//N到M之间的随机整数 console.log(Math.floor(Math.random()*(M - N +1)) + N)*/ // 根据传入的参数 生成N~M之间的随机数 左闭右开 function getRandom(N,M) { return Math.floor(Math.random()*(M - N +1)) + N } console.log(getRandom(4,9))
4. 术语解释
术语 | 解释 | 举例 |
---|---|---|
关键字 | 在JavaScript中有特殊意义的词汇 | let、var、function、if、else、 switch、case、break |
保留字 | 在目前的JavaScript中没意义,但未 来可能会具有特殊意义的词汇 | int、short、long、char |
标识(标识符) | 变量名、函数名的另一种叫法 | 无 |
表达式 | 能产生值的代码,一般配合运算符出 现 | 10 + 3、age >= 18 |
语句 | 一段可执行的代码 | If () for() |