函数

声明(定义)

声明(定义)一个完整函数包括关键字、函数名、形式参数、函数体、返回值5个部分

1
2
3
4
function 函数名(形式参数) {
//函数体
return //返回值
}

调用

声明(定义)的函数必须调用才会真正被执行,使用 () 调用函数。

1
2
3
4
function sayHi() {  //定义函数
console.log('嗨~')
}
sayHi() //调用函数

参数

通过向函数传递参数,可以让函数更加灵活多变,参数可以理解成是一个变量。

声明(定义)一个功能为打招呼的函数

  • 传入数据列表
  • 声明这个函数需要传入几个数据
  • 多个数据用逗号隔开
1
2
3
4
5
6
function sayHi(name) {
console.log(name)
console.log('嗨~' + name)
}
sayHi('小明') // 结果为 小明
sayHi('小红') // 结果为 小红

返回值

通过 return 这个关键字,将内部执行结果传递到函数外部,这个被传递到外部的结果就是返回值。

1
2
3
4
5
function count(a, b) {  // 定义函数
let s = a + b
return s
}
let total = count(5, 12) //将函数结果赋值给total
  • 函数可以没有return,这种情况默认返回值为 undefined

作用域

全局作用域

作用于所有代码执行的环境(整个script标签内部)或者一个独立的.js文件

处于全局作用域内的变量,称为全局变量

局部作用域

作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。

处于局部作用域内的变量称为局部变量

匿名函数

函数可以分为具名函数匿名函数

匿名函数:没有名字的函数,无法直接使用

函数表达式

1
2
3
4
5
6
7
8
9
10
11
// 声明
let fn = function() {
console.log('函数表达式')
}
// 调用
fn()
//在事件中使用
let btn = document.querySelector('button')
btn.onclick = function() {
alert('这就是匿名函数')
}

立即执行函数

1
2
(function(){xxxx})();
(function(){xxxx}());

无需调用,立即执行,其实本质已经调用了

多个立即执行函数之间用分号隔开

对象

对象是 JavaScript 数据类型的一种,是一种数据集合。它由属性和方法两部分构成。

语法

1
let user = {}  //这是个空对象

属性和访问

数据描述性的信息称为属性

  1. 属性都是成对出现的,包括属性名和值,它们之间使用英文 : 分隔
  2. 多个属性之间使用英文 , 分隔
  3. 属性就是依附在对象上的变量
  4. 属性名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等

声明对象,并添加了若干属性后,可以使用 . 或 [] 获得对象中属性对应的值,我称之为属性访问。

1
2
3
4
5
6
7
8
9
10
11
12
13
let person = {
name: '小明', // 描述人的姓名
age: 18, // 描述人的年龄
stature: 185, // 描述人的身高
gender: '男', // 描述人的性别
}
console.log(person.name) // 结果为 小明
console.log(person.gender) // 结果为 男
console.log(person['stature']) // 结果为 185
console.log(person.stature) // 结果同为 185
//也可以动态添加属性
user.country = '中国'
user['height'] = 186

方法和调用

数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。

  1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
  2. 多个属性之间使用英文 , 分隔
  3. 方法是依附在对象中的函数
  4. 方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等

声明对象,并添加了若干方法后,可以使用 . 或 [] 调用对象中函数,我称之为方法调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let person = {
name: '小红',
age: 18,

singing: function () {
console.log('两只老虎,两只老虎,跑的快,跑的快...')
},
run: function () {
console.log('我跑的非常快...')
}
}
// 调用对象中 singing 方法
person.singing()
// 调用对象中的 run 方法
person.run()
// 也可以动态添加方法
user.move = function () {
console.log('移动一点距离...')
}

注意:无论是属性或是方法,同一个对象中出现名称一样的,后面的会覆盖前面的。

null

null 也是 JavaScript 中数据类型的一种,通常只用它来表示不存在的对象。使用 typeof 检测类型它的类型时,结果为 object

遍历对象

1
2
3
4
5
6
7
8
9
let obj = {
uname: 'alien',
age: 22,
sex: '男'
}
for(let k in obj) {
console.log(k) //打印属性名
console.log(obj[k]) //打印属性值
}
  • for in 不提倡遍历数组,因为k是字符串

内置对象

内置对象,例如:console.log

Math对象

Math 是 JavaScript 中内置的对象,称为数学对象,这个对象下即包含了属性,也包含了许多的方法。

属性

  • Math.PI,获取圆周率
1
2
// 圆周率
console.log(Math.PI);

方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 随机数,0 ~ 1 之间的随机数, 包含 0 不包含 1
Math.random()
// 舍弃小数部分,整数部分加1
Math.ceil(3.4)
// 舍弃小数部分,整数部分不变
Math.floor(4.68)
// 取整,四舍五入原则
Math.round(5.46539)
Math.round(4.849)
// 找出最大值
Math.max(10, 21, 7, 24, 13)
// 找出最小值
Math.min(24, 18, 6, 19, 21)
// 求某个数的多少次方
Math.pow(4, 2) // 求 4 的 2 次方
Math.pow(2, 3) // 求 2 的 3 次方
// 求某数的平方根
Math.sqrt(16)