函数
通过函数的声明实现逻辑的封装,可以让代码实现复用。
函数的基本使用
函数的命名规范:
function getSum() {
let num1 = +prompt('输出第一个数')
let num2 = +prompt('输出第二个数')
document.write(`两个数的和是${num1 + num2}`)
}
getSum()
函数的参数
使得函数变得灵活。
// 计算两个数的和
// num1 = 0, num2 = 0为默认参数,只要在缺少实参参数时才会被执行,使得程序更加严谨
function getSum(num1 = 0, num2 = 0) {
document.write(`两个数的和是${num1 + num2}`)
}
getSum(1, 2)//输出3
getSum()//输出0
函数的返回值
使用关键字return将函数内部执行结果返回到函数外部。
// 完整意义上的求和(包含参数+返回值)
function getSum(num1, num2) {
let sum = num1 + num2
// 返回
return sum
}
let num1 = +prompt('请输入第一个数')
let num2 = +prompt('请输入第二个数')
// 参数传递
let re = getSum(num1, num2)
document.write(re)
注:return只能返回一个值,若要返回几个值,则把他们包起来当作数组形式来返回。
函数补充细节
1.两个相同命名的函数,后面的会覆盖前面的。
2.JS中,实参的个数和形参的个数可以不一样。
如果形参过多,会自动补上undefined
如果实参过多,多余的实参会被忽略
3.函数一旦执行到return后就不再执行,结束函数用return
作用域
一段程序代码中所用的名字的可用范围就称这个名字的作用域。
变量的访问原则:在能够访问的情况下先局部,局部没有再全局。
匿名函数
使用匿名函数的方法
函数表达式
将匿名函数赋值给一个变量,并且通过变量去调用,称之为函数表达式。
经常用于后面的API学习。
let fn = function () {
console.log('我是函数表达式方式')
}
fn()
匿名函数和之前写的具名函数的区别:
1.具名函数的调用可以到任何位置
2.函数表达式必须先声明函数表达式再调用
立即执行函数
避免全局变量之间的污染。
(function () {
let num = 10
})();
(function () {
let num = 20
})();
对象
是一种数据类型,可以理解为无序的数据集合(ps:数组是有序的数据集合)。
对象属性
let obj = {
// 对象的属性,是数据描述性的信息
goods: '小米',
name: '小米10青春版',
num: 100002816024,
weight: '0.55kg',
address: '中国大陆'
// 对象的方法,是对象的一些功能
}
对象的操作(增、删、改、查)
// 查属性: 对象名.属性名(方法一)
console.log(obj.goods)
// 查属性: 对象名['属性名'](方法二)
console.log(obj['name'])
// 改属性:对象名.属性名=新值
obj.goods = '华为'
console.log(obj.goods)
// 增属性:对象名.属性名=新值
obj.color = 'black'
console.log(obj)
// 改和增的语法一样,判断标准就是这个对象有没有这个属性,没有就是新增,有就是改
// 删属性:delete 对象名.属性名
delete obj.color
console.log(obj)
对象方法
// 对象方法的声明
let obj = {
sing: function () {
console.log('唱歌')
},
dance: function () {
console.log('跳舞')
}
}
// 对象方法的使用 对象名.方法[注:方法类似于函数 也可以进行传参操作]
obj.dance()
对象的遍历
// 遍历对象 使用for in
let obj = {
name: '张三',
age: '18',
gender: '男'
}
for (let k in obj) {
console.log(obj[k])
}
注意:使用for in方法遍历出来的值是字符串类型的,由上面对象的查操作可以知道,可以使用对象名[属性名]去获取属性名是字符串类型的属性值。
遍历数组对象
//遍历数组对象
let student = [
{ name: '小明', age: '18', gender: '男' },
{ name: '小李', age: '48', gender: '男' },
{ name: '小芳', age: '38', gender: '女' },
{ name: '小陈', age: '19', gender: '男' },
{ name: '小爱', age: '21', gender: '女' }
]
for (let i = 0; i < student.length; i++) {
// console.log(i) 下标索引号
// console.log(student[i]) 每个对象
console.log(student[i].name) //每个对象的name属性
}
内置对象
js内部提供的对象,包含各种属性和方法给开发者调用。
这里学习Math.random()函数。(因为应用场景比较广泛)
Math.random()随机数函数,返回一个[0,1)范围间的数(包含0不包含1)
// 生成0-10的随机整数
// Math.floor是向下取整的意思,在此处是为了使随机数都为整数
Math.floor(Math.random() * (11))
//生成N-M之间的随机整数
function getRandom(N, M) {
return Math.floor(Math.random() * (M - N + 1)) + N
}
let num = getRandom(2, 3)
console.log(num)
// 数组中随机取值
let arrs = ['green', 'blue', 'red']
// 随机获取数组下标
let random = Math.floor(Math.random() * arrs.length)
console.log(arrs[random])