一、作用域
通常来说,一段程序中的代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域,作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
在javaScript中,根据作用域的不同,变量可以分为两种:
1.全局变量
全局作用域在全局有效,作用于所有代码执行的环境或者一个独立的js文件。函数外部声明的变量被称为全局变量,在任何区域都可以访问和修改。
2.局部变量
局部作用域在局部有效,作用于函数内的代码环境,就是局部作用域。因为跟函数有关系,所以也称为函数作用域。函数内部声明的变量被称为局部变量,其在当前函数内部访问和修改。
3.注意点
变量有一个特殊情况,如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐。
二、对象(object)
对象是JavaScript里的一种数据类型,可以理解为是一种无序的数据集合,用来描述某个事物,例如描述一个人,如学生这个对象中有学号、姓名、年级、年龄等信息。
1.对象的使用
(1)声明
方法一:
let 对象名 = {};
方法二:
let 对象名 = new Object();
(2)对象的属性和方法
对象有属性和方法组成,数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名称性的,属性都是成对出现的,包括属性名和值,它们之间使用英文“:”分隔,而多个属性之间使用英文“,”分隔,属性就是依附在对象上的变量,属性名可以使用“”或‘’,一般情况下省略,除非名称遇到特殊符号如空格、中横线,举例:
let qgy = {
name: 'qgy',
age: 20,
gender: 'man'
};
方法可以理解为一个对象的功能或行为,举例:
let qgy = {
name: 'qgy',
play: function(){
console.log('原神启动');
}
};
(3)对象中属性的增删改查
声明对象并添加了若干属性后,我们就可以通过对象.属性的方式来获取改对象中的属性的值,例如:
let qgy = {
name: 'qgy',
age: 20
};
console.log(qgy.name); //'qgy'
console.log(qgy.age); //20
除了获取对象中的值以外,我们还可以更改对象中的属性值,也是用对象.属性的方法给属性赋值,例如:
let qgy = {
name: 'qgy',
age: 20
};
console.log(qgy.age); //20
qgy.age = 18;
console.log(qgy.age); //18
如果想给对象里加入新的属性,可以用对象.新属性的方法给对象加入新属性,例如:
let qgy = {
name: 'qgy',
age: 20
};
qgy.language = 'JavaScript';
如果想删除对象中的属性,我们可以使用关键字delete来删除,例如:
let qgy = {
name: 'qgy',
age: 20,
needDeleteInfo: '114514'
};
delete qgy.needDeleteInfo;
查找属性的特殊方法
对于多词属性或者‘-’等属性,点操作符就不能使用了,我们可以采取对象['属性名']的方式获取,例如:
let qgy = {
'first-name': 'Q',
name: 'qgy',
age: 20
}
console.log(qgy['first-name']); //'Q'
(4)遍历对象
我们在遍历对象时一般使用for in的方式遍历,例如:
let qgy = {
age: 'qgy',
language: 'JavaScript',
school: '山理工'
};
for(let i in qgy){
console.log(i); //打印属性名
console.log(qgy[i]); //打印属性值
}
这种方法也可以用来遍历数组,但我们一般不用而是来遍历对象,for in中的i是一个变量,在循环的过程中依次代表对象的属性名,由于i是变量,所以必须使用[]方法来获取属性值。
三、内置对象
内置对象是JavaScript内部提供的对象,包含各种属性和方法给开发者调用,如我们之前使用的document.write()和console.log()等。
内置对象——Math
Math对象是JavaScript提供的一个“数学”对象,它提供了一系列做数学运算的方法,其中包含以下方法。
- random:生成0——1之间的随机数(包含0不包含1);
- ceil:向上取整;
- floor:向下取整;
- max:找最大数;
- min:找最小数;
- pow:幂运算;
- abs:绝对值;