zoukankan      html  css  js  c++  java
  • 获取JavaScript对象的键值对两种方法的不同之处

    JavaScript 的对象是一种无序的集合数据类型,是由键值对组成的,与Python字典有一定相似性。不过javascript的键要求必须是字符串,而值可以是其他类型,甚至键必须是唯一的,因为当键不唯一时,后面的键会覆盖前面的键。

    1 var max = {  
    2            'birth-month':'January',  
    3            'birth-month':1}  
    4 alert(max['birth-month']);  
     

    弹出的对话框显示1,而不是January.

    既然键是字符串,我们可以用加引号来声明键,如'name',而官方也给出了我们不加引号也声明的例子,如age,这两种声明有什么不同呢?

     1 var max = {'name':'marxwolf',  
     2             age:18,  
     3            'birth-month':'January',  
     4            'birth-month':18}  
     5 alert(max.name);  
     6 alert(max['name']);  
     7 alert(max.age);  
     8 alert(max['age']);  
     9 //alert(max.birth-month);  
    10 alert(max['birth-month']);  

    如果键的声明是一个有效的变量名,我们可以加引号,也可以不加引号,也就是说这两种情况是等价的,我们可以用max.name索引,也可以用max['name']索引,这两种情况完全是等价的。

    但是如果键的声明不是一个有效的变量名,比如说birth-month,加入了中划线,就必须加引号,不然会产生语法错误,而这种情况下的调用,也必须是max['birth-month']这种方式。
    但是,我又发现当在循环中调用的时候,好像只能用max[key]这种形式,而max.key这种形式会报错,max[key]这种形式key可以是一个变量,也可以是一个定值,但如果是定值的话要加引号(单双都行),max.key这种形式key只能是定值且不用加引号。

  • 相关阅读:
    Redis的分布式锁
    Redis的雪崩、击穿、穿透
    psr规范
    Mysql的联(复)合索引
    nginx的location配置(二)
    nginx的location规则(一)
    easyswoole中队列的使用
    第三章 文件I/O
    移动语义及拷贝优化
    PHP对接tdzntech.com云平台电子免费券程序
  • 原文地址:https://www.cnblogs.com/swwag/p/7474649.html
Copyright © 2011-2022 走看看