作用域
意义:一段代码中所用到的名字不总是有效可用的,限定这个名字的可用性代码范围
全局作用域
全局有效,作用所有代码
局部作用域
局部有效,作用于函数内的代码环境,和函数有关也称函数作用域
块级作用域
在大括号{}有效,if语句和for语句里面等
作用域不同,变量分不同
全局变量
局部变量
块级变量
作用域链
执行哪一个变量,就近原则
<script>
let num = 10
function fn() {
let num = 20
console.log(num)
}
fn()
</script>
输出20
先在内部查找,再在外部查找
匿名函数
具名函数
function fn() {}
fn()
匿名函数
function(){}
函数表达式
将匿名函数赋值给一个变量,并且通过变量名称进行调用
let fn=function(){
//函数体
}
立即执行函数
function(){
console.log(111)
}
对象
概念
js里的一种数据类型,无序的数据集合,描述一个事物,静态特性/动态特征
声明对象
let 对象名 = {}
let person = {}
属性
对象信息或者特征
方法
对象功能或者行为,本质就是放对象里的函数
let 对象名 = {
属性名:属性值,
方法名:函数
}
说明
属性都是成对出现,包括属性名和属性值。
多个属性逗号隔开。
属性就是依附在对象上的变量。(外面是变量,对象内是属性)
属性访问
let person = {
name: "liu",
age: 23,
sex: "man",
}
console.log(person.name)
console.log(person.age)
let person = {
name: "liu",
age: 23,
sex: "man",
}
console.log(person['sex'])
console.log(person['name'])
方法访问和调用
let person = {
name: "liu",
age: function () {
console.log("那年18")
},
}
person.age()
对象操作
<script>
let person = {
name: "liu",
age: 18,
sex: "179",
}
// 查
console.log(person.name)
// 改
person.age = 80
console.log(person.age)
// 增
person.weight=180
console.log(person.weight)
// 删
delete person.age
console.log(person)
</script>
遍历对象
let person = {
name: "liu",
age: 18,
sex: "179",
}
// 遍历对象
for(let k in person){
console.log(person[k])
}
数组对象
<script>
// 数组里面可以放任何数据类型
let arr = [1, "pink", "liu", true, []]
console.log(arr)
</script>
得到数组里面的属性
<script>
let students = [
{ name: "liu", age: 13, hometown: "重庆" },
{ name: "张三", age: 34, hometown: "四川" },
{ name: "李四", age: 56, hometown: "湖北" },
{ name: "王五", age: 67, hometown: "湖南" },
]
for (let i = 0; i < students.length; i++) {
console.log(students[i].name)
console.log(students[i].hometown)
}
</script>