JS作用域及对象的基本使用

一、作用域

1、作用域定义

变量在不同的范围内取不同的值。

2、分类

全局作用域:

在整个script标签的范围内都起作用。

注:同一个页面中若存放两个script标签,上一个Script标签中的全局变量 会影响下面script标签中的相同变量。(不建议一个页面设置两个script标签)

局部作用域:

主要是函数作用域,函数中的形参默认是局部作用域。在函数内定义的数据,其作用域是函数内的大括号部分。

若函数作用域内没有定义变量却使用了变量,那么会往全局作用域寻找声明的变量,若也没有则报错。(就近原则)

二、匿名函数

使用方式:

没有名字 无法使用的函数。如下:

<script>
    //fn() 报错  fn未声明
  let fn = function (x = 0, y = 0) {
    console.log(x + y);

  }
  console.log("~  fn", fn())
</script>

匿名函数相当于讲一个没有名字的函数赋值给变量,此时,必须先声明变量 再调用。具名函数在任何位置都可以调用(js预解析)

立即执行函数:

避免全局变量之间的污染

使用方法如下:

 let num = 10;
  // 立即执行前的代码后必须加;
  (function () {
    console.log(111);
  })();
  (function () {
    console.log(111);
  }());

注:立即执行函数前的代码后必须加;

三、对象

定义:

对象简单来说就是一组无序的键值对的集合

使用方式:对象中存放的数据以键值对的形式存放,

let 对象名字 = { //1.用花括号表示对象
    属性名:属性值,//2.属性名和属性值之间用:隔开(英文分号)
    方法名:函数//3.如果下面还有属性,上面需要用逗号隔开(英文逗号)
}
  let goods = {
    name: '小米10青春版',
    num: 100012816024,
    weight: '0.55kg',
    address: '中国大陆',
    sing: function () {
      console.log('我会唱歌');
    }
  }

使用方式:

增删改查:

// 1.申明
let obj = {
    'goods': '小米10青春版', //属性名加不加引号都可以,加的话都加,不加的话就都不加
    num: '100012816024',
    weight: '0.55kg',
    address: '中国大陆'
}
// 2.查询对象的某个属性 语法:对象.属性
console.log(obj.address);//查询obj对象的address属性

// 3.修改对象的某个属性 语法:对象.属性 =  值
obj.address = '中国合肥闽商国贸'//修改obj对象的address属性 就是赋值
console.log(obj.address);

// 4.添加对象的某个属性 语法:对象.属性 =  值(和修改一样的语法,有就是改,没有就是新增)
obj.price = '1999'//新增obj对象的price属性
console.log(obj.price);


// 5.删除对象的某个属性 语法:delete 对象.属性(delete 需要空格一下)用的较少
obj.gender = '男'//新增obj对象的gender属性
console.log(obj.gender); //先演示下在控制台删除
// delete obj.gender
// console.log(obj.gender);

对象中的查询另一种方式:

let jsonObj = {
    'user-name':'jsonWang'
}
console.log(jsonObj.user-name); //这个会报错,因为把-当成了减号?
// 解决方法  查询的另一种语法  
//对象[属性]    对象.属性 都要掌握
console.log(jsonObj['user-name']);//用中括号括起来是一组,里面用''告诉js这个是字符串

总结:

  • 对象是什么?特点?

    • 对象是一种数据类型

    • 无序的数据的集合,描述某个事物

  • 对象的基本使用

    • 查语法:

      • 对象名.属性
      • 对象名[‘属性’]
    • 改语法: 对象名.属性 = 新值

    • 增语法: 对象名.新属性名 = 新值

    • 删语法(一嘴带过)delete 对象名.属性名

遍历对象:

for in方法用于遍历对象(无固定长度),for方法用于遍历数组(有固定长度)

for (let 属性名 in 对象名) {}

使用:

// for in 我们不推荐遍历数组
   let arr = ['三国演义','西游记','红楼梦','水浒传']
    for (let k in arr) {
      console.log(k)  // 数组的下标 索引号  但是是字符串 '0'
      console.log(arr[k])  // arr[k]
    }
// 1. 遍历对象 for in(为什么不用for遍历对象,无需没有索引)
let obj = {
    uname: 'jsonWang',
    age: 18,
    gender: '男'
}
// 2. 遍历对象
for (let k in obj) {
    console.log(k) // 属性名  'uname'   'age'
    // console.log(obj.uname)
    // console.log(obj.k)
    // console.log(obj.'uname')
    // console.log(obj['uname'])   'uname'  === k
    console.log(obj[k])  // 输出属性值  obj[k]
}

遍历数组对象:

let students = [
    { name: '小明', age: 18, gender: '男', hometown: '河北省' },
    { name: '小红', age: 19, gender: '女', hometown: '河南省' },
    { name: '小刚', age: 17, gender: '男', hometown: '山西省' },
    { name: '小丽', age: 18, gender: '女', hometown: '山东省' }
]
for (let i = 0; i < students.length; i++) {
    // console.log(i)  // 下标索引号
    // console.log(students[i]) // 每个对象
    console.log(students[i].name)
    console.log(students[i].hometown)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值