javascript对象用中括号取值不加双引号为什么会去访问变量

var a = 'b';
var obj = {
a: 123
}
obj[a] == obj['b']
我向了解更深点,为什么中括号不加双引号会去访问变量去

0

1个回答

几乎所有的编程语言,没有引号的合法标识符都表示一个变量。
这个变量单独写出来代表一个最基本的表达式,表达式的值就是变量代表的值。
因此 obj[a] 就是 obj[a的值],而a的值就是 'b',用引号包围的字符,就是字符串,它不表示变量,而是表示字面的值。
这个别说js,任何语言都是最基本的概念。

0
danielinbiti
danielinbiti 回复caozhy: 回答的太好了
2 个月之前 回复
caozhy
caozhy 回复baidu_41020864: 因为数字不能作为变量名,所以不会混淆。 var 1 = 2 这是不合法的,但是字符串的字面值和变量名必须用引号区分。
2 个月之前 回复
baidu_41020864
baidu_41020864 那么大佬为什么数字类型用中括号取不用加双引号呢, 感谢大佬
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的。是时候展现真正的技术了!
其他相关推荐
JS声明对象时属性名加引号与不加引号的区别
原文地址:http://www.qttc.net/201306336.html 这个问题很好有人关注,但我每一次在声明一个对象属性的时候都要想想要不要给属性加引号?加引号与不加引号有什么区别? 其实在JavaScript中,加引号与不加引号都是一样用,都是有效的。如: var obj = { name : '琼台博客', 'age' :
javaScript访问对象属性应该用点号还是中括号?
JavaScript中有两种方式来访问对象的属性,点操作符或者中括号操作符。 两种语法是等价的,但是中括号操作符在下面两种情况下依然有效 - 动态设置属性 - 属性名不是一个有效的变量名。 点号后加标识符(静态的); 中括号放字符串,字符串可以是动态的,obj['string'+variable]; 如果是静态的还是用点号方便;
JavaScript Json与单引号 双引号
本篇稍微讲下单引号、双引号与JavaScript和JSON之间错综复杂的关系哈,不注意的话还真可能有点懵圈。首先在JavaScript中,单引号、双引号意义相同,完事。猫哥也是时而用单引号,时而用双引号,现在倾向于使用双引号。而在JSON中,因为JSON是一种数据传输格式,各种语言、各种操作系统、各种平台实际上是共享的,共同遵守这么一种标准,共同为其做一些工作以便JSON在各语言、系统、平台都能具备
JavaScript中,对象需不需要加引号?
一般情况一般情况下,加不加引号是一样的.var obj = { name: 'win_turn', 'age': 23, }; document.write('name: ' + obj['name'] + '<br />'); document.write('age: ' + obj.age + '<br />');执行结果是: name: win_turn age: 2
关于js获取对象 使用点和使用中括号的区别
1、中括号法可以用变量作为属性名,而点方法不可以;2、中括号法可以用数字作为属性名,而点语法不可以;3、中括号法可以使用js的关键字和保留字作为属性名,而点语法不可以(尽量避免在变量或者属性中使用关键字或保留字);...
js对象属性 通过点(.) 和 方括号([]) 的不同之处
例:<script type="text/javascript"> var author = book.author; //得到book的"author"属性 var name = author.subname; //得到author的"surname"属性 var title = book["main title"]; //得到book的"main title"属性 </script>
js对象属性 通过点(.) 和 方括号([]) 的不同之处
【JS对象属性的查询和设置】 可以通过点(.) 或 方括号([]) 运算符来获取属性的值。运算符左侧应当是一个表达式,它返回一个对象。对于点(.)来说,右侧必须是一个以属性名称命名的简单标识符。对于方括号([])来说,方括号里必须是一个计算结果为字符串的表达式,这个字符串就是属性的名字:   var author = book.author; //得到book的"author"属性  
JavaScript 1.3 对象补充:JS声明对象时属性名加引号与不加引号的区别(转)
JavaScript 1.3 对象补充:JS声明对象时属性名加引号与不加引号的区别(转)   这个问题很好有人关注,但我每一次在声明一个对象属性的时候都要想想要不要给属性加引号?加引号与不加引号有什么区别? 1其实在JavaScript中,加引号与不加引号都是一样用,都是有效的。如:   var obj = {     name        : '琼台博客',
js中函数调用,加括号和不加括号,加引号和不加引号的区别
关于js中函数调用,加括号和不加括号,加引号和不加引号的区别
js 对象属性名不加引号与加引号的区别
js 变量的命名规则  标识符只能由字母、数字、下划线和‘$’组成  数字不可以作为标识符的首字符(纯数字除外:js会自动将数字转化为字符串类型)   JSON 语法: 是 JavaScript 对象表示法语法的子集 1、非数字型键值必须双引号 2、json 值 :  数字(整数或浮点数) 字符串(在双引号中)  逻辑值(true 或 false)
JavaScript小括号、中括号、大括号的多义性
小括号 JavaScript中小括号有五种语义: 语义1,函数声明时参数表 [javascript] view plaincopy func(arg1,arg2){   // ...   }   语义2,和一些语句联合使用以达到某些限定作用 [javascript] view plaincopy
访问对象属性的点表示法和方括号表示法的区别
var person = { name:'gogo' }一般来说,访问对象属性时都使用点表示法,这也是很多面向对象语言中通用的语法。不过在javascript中,也可以使用方括号表示法来访问对象的属性。在使用方括号语法时,应该把属性以字符串的形式放在方括号中,如:alert(person["name"]); //gogo alert(person.nam
JavaScript 使用变量访问对象属性
  var testObj = { 12: &quot;Namath&quot;, 16: &quot;Montana&quot;, 19: &quot;Unitas&quot; }; // Only change code below this line; var playerNumber=16; // Change this Line var player =testObj[playerNumber]; // Change this Lin...
js对象中属性名加引号和不加引号的区别
#一般情况下属性名加引号和不加引号是都可以的,效果是一样的,比如下面age属性加不加引号都可以访问到的: #但是,不符合规范的属性名必须要加引号 1.比如以数字打头的属性名: var obj = { name: 'wozien', 53age: 16 }在chrome中会报错: 2.数字开头的属性必须用obj[ ]方括号进行访问,如下: var obj = { na
在JavaScript中输入的参数什么时候带引号,什么时候不带引号,有什么区别?
在JavaScript中输入的参数什么时候带引号,什么时候不带引号,有什么区别?
属性取值、赋值点与中括号操作符的区别
属性取值、赋值点与中括号操作符的区别    1、点操作符: 静态的     2、中括号操作符: 动态的 book[“….”+author]var book = null; console.log(typeof(book.name)); console.log(typeof(book["name"])); 报错:Uncaught TypeError: Cannot read property 'na
js代码中 何时加入引号,何时不加
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>函数传参</title> </head> <style type="text/css"> #div1{ width: 200px; height: 200px
一个简单的例子解释obj中key用不用引号的问题
var obj = { a : ' a ', 'b' : ' b ', c : function(){console.log(' c ')}, 'd' : function(){console.log(' d ')}, e : function(x){console.log(' e ' + x)}, 'f' : function(x){console
javascript使用方括号([])引用对象的属性和方法
在JavaScript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法) 很简单,即: 对象名.属性(方法)名 除此之外,还可以用方括号的形式来引用: 对象名["属性(方法)名"] 注意,这里的方法名和属性名是一个字符串,而非原先点号后面的标识符,例如: var arr=new Array(); //为数组添加一个元素 arr["push"]("Leepy");
shell 判断变量是否为空,变量加不加双引号的区别
对于 if 条件语句里所有的字符串的比较时,最好是在变量的外面加上双引号。特别是 if -n 判断字符串是否为null时候(null意思就是字符串长度为0),一定要加上双引号。
php双引号中访问数组元素报错
最近在做微信公众号开发,在一个发送图文接口中,需要把数组元素拼接在XML字符串中 foreach ($itemArr as $key => $value){ $items .= " "; } 结果竟报如下错误信息: br />font size='1'>table class='xdebug-error xe-parse-error'
JavaScript-js中把一个函数赋给一个对象时带不带括号的区别?
http://segmentfault.com/q/1010000000732577关于闭包概念: http://www.jb51.net/article/24101.htm 它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
el表达式在js中有时需要加引号才可以用,何时需要加引号,何时不需要加引号
本以为js是弱语言,对语言的要求不高,但是今天遇见一个坑,在js代码中编写el表达式,却一直没反应,代码如下 $(function(){ var msg = ${msg}; if(msg!=null && msg != ''){ alert(msg); } }); 在此代码中,接收服务器返回的msg信息,用el表达式取值,却一直没有反应,应该在el表达式两边加引号,如下:
Linux_Bash脚本_单引号’双引号“”反引号`小括号()中括号[]大括号{}
一、单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题。 因为空格在linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错。为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外。所以,两者基本上没有什么区别,除非在内容中遇到
js 对象中的中括号与点在调用对象属性时的区别
一、调用属性 一般来说一个对象的属性的调用都是用一个 . 来调用,就像下面这个例子一样 var obj={ test:'wtf' } console.log(obj.test) 输出了wtf 但js还有另一个操作符调用对象的属性就是[ ],例子如下 var obj={ test:'wtf' } var index='test' console.log(obj[ind
bash编程中,变量“用双引号”和“不用双引号”的区别
变量用双引号括起来的意义 推荐今后编程中变量必须用双引号括起来同事遇到一个bash编程上的bug,一时没有解决方法。 后经百度,虽然找不到问题直接原因的出处;但是在知乎上看到了有人做出了合理的解释。shell编程中用双引号引用参数和不用双引号有什么区别? - 知乎 https://www.zhihu.com/question/33466555变量用双引号括起来的意义如果变量不用双引号括起来,比如
浅谈JS中中括号([])用法
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。 中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 中括号运算符可以用纯数字为属性名。点运算符不能。 中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。     例一:              /**       * 在JavaScript里面 . 可以理解成 的       *
js中 中括号[ ]和.的区别
点号后加标识符(静态的) 中括号放字符串,字符串可以是动态的,obj[‘string’+variable]如果是静态的还是用点号方便点号后加标识符(静态的) 中括号放字符串,字符串可以是动态的,obj['string'+variable]如果是静态的还是用点号方便 function a (n){ obj.style[n] = “20px” } a[top] function
js中中括号,大括号使用详解
js中中括号,大括号使用详解
获取对象属性的点方法和中括号法的区别
今天写题的时候遇到用点取不到对象这个问题, 题目大致是这个样子 console.log($element);//{BranchId: "0003", CHName: "哈哈哈", ShortName: "嘻嘻嘻"} console.log(CacheData.columns[0])//BranchId; console.log(CacheData.columns[1]
JS中访问对象属性的点表示法和方括号表示法
点表示法&amp;amp;&amp;amp;方括号表示法从功能上看,这两种访问对象属性的方法没有任何区别。但方括号语法的主要优点是可以通过变量来访问属性,例如: var propertyName = &quot;name&quot;; alert(person[propertyName]); //&quot;Nicholas&quot; 如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,这时候就可以使用方括号表示法来访问它们...
JavaScript对象取值方式分析
定义一个对象 var a={key1:"a",key2:"b"}; 取值方式一 var value1=a['key1']; 取值方式二 var value2=a.key1; 分析: 两种取值方式在语法上都没有问题,但是第二种取值方式在性能上优于第一种方式; 但是第二种方式无法应用于动态取值问题,动态取值的时候需要用第一种方式。 var value3="key2"; var
Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
hasOwnProperty
PHP数组键值使用单引号和双引号和无符号的区别
第一种:$array['key']此单引号键值模式可以直接被解析为一个数组即$array 第二种:$array["key"]此双引号键值模式,先执行的是"key",判断是否有定义的PHP变量存在,在解析为数组即$array 第三种:$array[key]此为无单双引号键值模式,会先分析局部作用于是否有key键值定义的常量存在,即使用define('key','val'),然后解析数组即$arr
Python 类变量(类名不加括号访问的变量)
起因: 下面一段代码没有达到预期 # config.py class GlobalVar(): is_init = False def set_init_status(is_init): GlobalVar().is_init = is_init def get_init_status(): return GlobalVar().is_init if ...
js中方法调用加括号和不加括号的区别
前言 一个页面需要使用到setInterval和setTimeout。使用过程中对于方法的调用出现了加括号和不加括号的区别,当然在其他的场景也有发生,window.load = init等等 区别 以test()和test为例 1.无括号 test表示的函数指针,通俗的理解就是等待某个特定的位置后执行,而不是立马执行。这也是使用计时器中正确的写法。 2.有括号 t
JavaScript:将key名不带双引号的JSON字符串转换成JSON对象的方法
根据json.org上面的描述,JSON对象是由对象成员组成,而成员是由key-value键值组成。key值是一个字符串: 字符串由Unicode字符组成,用双引号包围,用反斜杠转义。可以是单个字符。用法跟C或Java里的字符串的用法相似。 但是,在现实应用中,很少有程序员知道JSON里的key需要用双引号包围,因为大多数的浏览器里并不需要使用双引号。所以,为什么多此一举要多写两个双引
js中定义变量时单引号和双引号的区别
一般Javascript资料里面,很少区分单引号(')和双引号(&quot;),认为它们作用相同,今天发现有一处不同点,举例如下: 在一段JS语句中,希望通过编程在网页中动态添加一个命令按钮, 则基本实现语句如下所示 var btnOk2=document.createElement(&quot;&amp;lt;input type='button' value='确定/&amp;gt;&quot;);...
PHP中的的大括号(花括号{})使用详解
在php中使用大括号基本有如下三种情况,下面本篇文章对这三种使用情况做一个总结。一、function name(){}, for(){}等等这种情况就不多说了,不说也知道是做什么用的了。二、$str{4}在字符串的变量的后面跟上{}大括号或者中括号[],里面填写了数字,这里是吧字符串变量当成数组处理。举个例子如下:<?php $str='phpernote.com'; echo $str{0}; /
json“不能用”方括号访问
var json={name:‘Sue’,age:24}; alert(json[name]); // 弹出 undefined alert(json.name); // 弹出 Sue 这样定义了一个json,然后试着弹出json的值,结果我懵了,方括号竟然访问不了json的某一项!? 记得老师说过“能用方括号的地方不一定能用点,但能用点的地方都能用方括