zoukankan      html  css  js  c++  java
  • JS对象中key和value加不加引号问题

    这片文章主要解决下面的问题

    1. 声明对象key和value到底加不加引号?两种有什么区别?
    2. .点语法和[]访问对象的属性有什么区别?
    3. JS对象中不合法的key值.点语法和[]访问都可以吗?
    4. .点语法和[]访问对象的方法怎么访问?
    5. 数据字典中如何声明?
    6. 给后台传递参数JS对象如何写,key和value到底加不加引号?

    声明JS对象key和value

    第一种key和value都加引号

    // 这种方式是最常见的方式,key和value都加引号
    let obj1 = {
      'name': 'akangwu',
      'age': '18',
      'say1': function () { // 这里是方法,就不加引号了。加引号就是字符串了,没有意义
        console.log('obj1第一种key和value都加引号')
      },
    }
    let name = 'name'
    let age = 'age'
    // 访问方式
    // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。
    console.log(obj1.name) // akangwu
    console.log(obj1.age) // 18
    console.log(obj1.say1()) // obj1第一种key和value都加引号,访问对象方法需要加括号调用
    console.log(obj1.say1) // [Function: say1],不加括号调用就是这种
    // 使用变量方式访问
    console.log(obj1[name]) // akangwu
    console.log(obj1[age]) // 18
    // 使用[]访问
    console.log(obj1['name']) // akangwu
    console.log(obj1['age']) // 18
    console.log(obj1['say1']()) // obj1第一种key和value都加引号,访问对象方法需要加括号调用
    console.log(obj1['say1']) // [Function: say1],不加括号调用就是这种

    第二种key没有引号,value有引号

    // 这种方式是最常见的方式,key和value都加引号
    let obj2 = {
      name: 'akangwu',
      age: '18',
      say1: function () { // 这里是方法,就不加引号了。加引号就是字符串了,没有意义
        console.log('obj2第二种key没有引号,value有引号')
      },
    }
    let name = 'name'
    let age = 'age'
    // 访问方式
    // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。
    console.log(obj2.name) // akangwu
    console.log(obj2.age) // 18
    console.log(obj2.say1()) // obj2第二种key没有引号,value有引号,访问对象方法需要加括号调用
    console.log(obj2.say1) // [Function: say1],不加括号调用就是这种
    // 使用变量方式访问
    console.log(obj2[name]) // akangwu
    console.log(obj2[age]) // 18
    // 使用[]访问
    console.log(obj2['name']) // akangwu
    console.log(obj2['age']) // 18
    console.log(obj2['say1']()) // obj2第二种key没有引号,value有引号,访问对象方法需要加括号调用
    console.log(obj2['say1']) // [Function: say1],不加括号调用就是这种

    第三种key有引号,value没有引号

    // 这种方式是最常见的方式,key和value都加引号
    let obj3 = {
      'name': akangwu, // 这里只要不是数字,就必须要加引号。不加引号会默认成变量,但是全局没有声明变量,就会报错
      'age': 18,
      'say1': function () { // 这里是方法,就不加引号了。加引号就是字符串了,没有意义
        console.log('obj3第三种key有引号,value没有引号')
      },
    }
    let name = 'name'
    let age = 'age'
    // 访问方式
    // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。
    console.log(obj3.name) // akangwu
    console.log(obj3.age) // 18
    console.log(obj3.say1()) // obj3第三种key有引号,value没有引号,访问对象方法需要加括号调用
    console.log(obj3.say1) // [Function: say1],不加括号调用就是这种
    // 使用变量方式访问
    console.log(obj3[name]) // akangwu
    console.log(obj3[age]) // 18
    // 使用[]访问
    console.log(obj3['name']) // akangwu
    console.log(obj3['age']) // 18
    console.log(obj3['say1']()) // obj3第三种key有引号,value没有引号,访问对象方法需要加括号调用
    console.log(obj3['say1']) // [Function: say1],不加括号调用就是这种

    JS对象中不合法的key

    // 这种方式是最常见的方式,key和value都加引号
    let obj4 = {
      '11name': '身份证', // 这里只要不是数字,就必须要加引号。不加引号会默认成变量,但是全局没有声明变量,就会报错
      'AA-age': '军官证',
    }
    let 11name = 'name' // 报错,因为变量要合法
    let AA-age = 'age' // 报错,因为变量要合法
    // 访问方式
    // . 方式可以直接跟名字;但是[]方式需要加引号,没有引号不能访问对象的属性,需要提前声明变量。
    console.log(obj4.11name) // 报错,key值比较特殊,不合法这种方法就不能访问
    console.log(obj4.AA-age) // 报错, key值比较特殊,不合法这种方法就不能访问
    // 使用变量方式访问
    console.log(obj4[11name]) // 报错, 因为声明的变量11name不合法,不合法这种方法就不能访问
    console.log(obj4[AA-age]) // 报错, 因为声明的变量AA-age不合法,key值比较特殊,不合法这种方法就不能访问
    // 使用[]访问
    console.log(obj4['11name']) // 身份证
    console.log(obj4['AA-age']) // 军官证

    数据字典中如何声明

    // 两种数据字典都是设置可以的。但是这种数据字典里面的key容易有非法的key,所以还是建议数据字典加上引号
    let obj5 = {
      '0001':'中国工商银行',
      '0002':'中国建设银行',
      '0003':'中国交通银行',
      '0004':'中国民生银行',
      '0005':'中国农业银行',
    }
    let obj6 = {
      0001:'中国工商银行',
      0002:'中国建设银行',
      0003:'中国交通银行',
      0004:'中国民生银行',
      0005:'中国农业银行',
    }

    给后台传递参数JS对象如何写,key和value到底加不加引号

    // 传递给后台的数据key可以不加,也可以不加,但是建议不加。但是value只要不是变量,就必须加。涉及到数字的时候需要和后台沟通是字符串还是数字
    var postData1 = {
              accnum: me.globalVars.detailsInfo.accnum,
              certinum: me.globalVars.detailsInfo.certinum,
              drawreason: '101',//提取原因:离退休提取
            }

    总结

    • 声明对象,传递给后台数据的时候key值不需要加引号;因为你声明对象肯定不会声明非法变量,同时传递给后台的字段也不会是非法变量,因为后台也是有变量命名要求的;
    • 声明数据字典的时候,建议key和value都加引号,单引号双引号都可以。因为后台返回的代码会是数字,可能存在非法命名,非法代码;
    • 访问对象的属性的时候:
      • 如果是对象本来的属性,也就是静态属性,建议使用.来访问
      • 如果是后续自己给对象加上的,也就是动态属性,建议使用[]来访问


    作者:豆沙小饼干
    链接:https://juejin.cn/post/6883829643133059080
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    深入MVC模式概念
    Asp.NET MVC and Asp.NET WebForms Features
    JavaScript实现简单进度条
    数据分页技术(学习笔记)
    sql行列转换<转>
    全自动静态网页生成器(三)——发布第一个可用版本
    ASP.NET AJAX进度条
    不能远程访问Win7系统上的Sql 2005数据库
    水印及缩略图的C#实现
    无任何网络提供程序接受指定的网络路径解决方法
  • 原文地址:https://www.cnblogs.com/setbug/p/14285086.html
Copyright © 2011-2022 走看看