javascript引用类型与流程控制

编辑: admin 分类: 电脑知识 发布时间: 2023-06-14 来源:互联网
JS基本语法-31. 引用类型

基本类型:number ,string ,boolean ,null ,undefined
引用类型:object ,array ,function

数组
  1. // const arr = [数组成员可以是任意类型]
  2. //数组
  3. const arr = [1 ,'admin' ,true]
  4. //数组访问 下标从0开始[index]
  5. console.log(arr[1]) //admin
对象
  1. //对象
  2. const obj = {
  3. //数据成员: 属性
  4. name: '小明',
  5. sex: '男',
  6. age: 15,
  7. 1: 0 //非法标识符 使用数组索引方式访问 obj[1]
  8. }
  9. // 对象访问
  10. console.log(obj.name) //小明
  11. //对象函数声明,属性就叫:方法
  12. //this:与当前对象绑定,this->user,user变this改变
  13. //箭头函数没有自己的this ,它的this,永远和它的上下文绑定(父级作用域)
  14. const user = {
  15. id: 5,
  16. uname: '张老师',
  17. show: function(){
  18. return `id=${this.id},uname=${this.uname}`
  19. }
  20. }
  21. console.log(user.show())
数组 对象 总结
  1. 1. 数组: [...] ,arr[index]
  2. 2. 对象: {...} ,obj.key
  3. 数组 ,对象的成员 ,可以是任意类型
数组,对象应用场景1. 多维数组
  1. let arr = [1 ,'手机' ,5000]
  2. arr = [
  3. [1 ,'手机' ,5000]
  4. [2 ,'电脑' ,9000]
  5. [3 ,'键盘' ,100]
  6. ]
  7. console.log(arr[1])
2. 对象数组
  1. let obj = [
  2. {
  3. id: 1,
  4. item: '手机',
  5. price: 5000
  6. },
  7. {
  8. id: 2,
  9. item: '电脑',
  10. price: 9000
  11. },
  12. {
  13. id: 3,
  14. item: '键盘',
  15. price: 1000
  16. }
  17. ]
  18. // 读取
  19. console.log(obj[1].item) //电脑
3. 类数组

//‘类数组’: 类似, 像一个数组 ,本质上仍然是一个对象
// 内部是数组结构,但是有一个对象的外衣

  1. const obj = {
  2. 0: 5,
  3. 1: 'admin',
  4. 2: '123@qq.com',
  5. length: 3
  6. }
  7. console.log(obj[0] ,obj.length) //5 ,3
  8. //转为真正的数组
  9. const arr = Array.from(obj)
  10. console.log(arr) //[5 ,'admin' ,'123@qq.com' ,3]
总结
  1. 多维数组(二维)
  2. 对象数组
  3. '类'数组
作用域与作用域链
  1. /?1. 块作用域
  2. {
  3. //let支持块作用域在作用域外访问不到✔
  4. //var不支持块作用域可以在块作用域外面访问到
  5. // var a = 100
  6. // console.log(a)
  7. }
  8. //外部访问不到
  9. // console.log(a)
  10. /?2. 函数作用域
  11. //从内部先查找,找不到往外找
  12. let links = 'https://baidu.com'
  13. const urls = function(){
  14. //内部声明的叫私有成员
  15. let links = 'https://php.cn'
  16. console.log(links)
  17. }
  18. urls() //https://php.cn
  19. //?3. 全局作用域
  20. //所有块,函数外部都是全局的
  21. const userName = 'php'
  22. {
  23. //在块里访问
  24. console.log(userName)
  25. }
  26. //函数里访问
  27. ;(function(){
  28. console.log(userName)
  29. })
对象简化
  1. //经典写法
  2. let item = {
  3. name: '苹果15',
  4. price: 50000,
  5. show: function(){
  6. return `${this.name}: ${this.price}元`
  7. }
  8. }
  9. //属性简化写法
  10. let names = '苹果15'
  11. let price = 50000
  12. item = {
  13. //属性名: 变量名
  14. //如果属性与变量同名可只写属性不写变量
  15. names,
  16. price,
  17. show: function(){
  18. return `${this.name}: ${this.price}元`
  19. }
  20. }
  21. //方法简化
  22. item = {
  23. //可以删除:function
  24. names,
  25. price,
  26. show(){
  27. return `${this.name}: ${this.price}元`
  28. }
  29. }
总结
  1. 作用域:用于查询变量
  2. 作用域链:查询变量的路径(由内向外不可逆)
  3. 类型:块,函数,全局
对象字面量的简化语法
  1. 属性简化: 属性名与变量同名的情况下只写属性即可
  2. 方法简写: 删除`:function`
流程控制
  1. //1. 分支
  2. //单分支
  3. let flag = false;
  4. if(flag){
  5. console.log('ok')
  6. }
  7. //2. 双分支
  8. if(flag){
  9. console.log('ok')
  10. }else{ // 条件不满足时候执行
  11. console.log('no ok')
  12. }
  13. //3. 多分支
  14. let nol = 120;
  15. if(nol === 100){
  16. console.log('Ok')
  17. }
  18. if(nol === 120){
  19. console.log('Hello')
  20. }else{
  21. console.log('No Hello')
  22. }
  23. //4. 双分支语法糖
  24. // 语法糖:简化抒写
  25. // 双分支简化成三元运算符
  26. let a = false;
  27. if(a){
  28. console.log('早上')
  29. }else{
  30. console.log('下午')
  31. }
  32. //三元运算符
  33. //条件 ? true : false
  34. // 简化
  35. console.log(a?'早上':'中午')
  36. //5. 多分支语法糖
  37. let arr1 = [1, 2, 3, 4, 5];
  38. //等值判断
  39. switch (arr1.length) {
  40. case 0:
  41. console.log("0");
  42. break;
  43. case 1:
  44. console.log("1");
  45. break;
  46. case 2:
  47. console.log("2");
  48. break;
  49. default:
  50. console.log("3");
  51. }
  52. //范围判断
  53. let b = 90;
  54. switch(b){
  55. case b>=80 && b< 100:
  56. console.log('b>=80 ,b< 100')
  57. break
  58. case b>=100 && b < 200:
  59. console.log('b>=100 ,b<200')
  60. break
  61. default:
  62. console.log('end')
  63. }
总结
  1. 单分支: `if(){...}`
  2. 双分支: `if(){...}else{...}`
  3. 多分支: `if(){...}else if(){...}else{...}`
  4. 双分支语法糖: `con ? true : false`
  5. 多分支语法糖: `switch`(离散,区间)
【文章原创作者:滨海网页设计 http://www.1234xp.com/binhai.html 复制请保留原URL】