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: 回答的太好了
4 个月之前 回复
caozhy
caozhy 回复baidu_41020864: 因为数字不能作为变量名,所以不会混淆。 var 1 = 2 这是不合法的,但是字符串的字面值和变量名必须用引号区分。
4 个月之前 回复
baidu_41020864
小萌新小奶狗 那么大佬为什么数字类型用中括号取不用加双引号呢, 感谢大佬
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
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>
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
javaScript访问对象属性应该用点号还是中括号?
JavaScript中有两种方式来访问对象的属性,点操作符或者中括号操作符。 两种语法是等价的,但是中括号操作符在下面两种情况下依然有效 - 动态设置属性 - 属性名不是一个有效的变量名。 点号后加标识符(静态的); 中括号放字符串,字符串可以是动态的,obj['string'+variable]; 如果是静态的还是用点号方便;
js中函数调用,加括号和不加括号,加引号和不加引号的区别
关于js中函数调用,加括号和不加括号,加引号和不加引号的区别
关于js获取对象 使用点和使用中括号的区别
1、中括号法可以用变量作为属性名,而点方法不可以;2、中括号法可以用数字作为属性名,而点语法不可以;3、中括号法可以使用js的关键字和保留字作为属性名,而点语法不可以(尽量避免在变量或者属性中使用关键字或保留字);...
js对象中属性名加引号和不加引号的区别
#一般情况下属性名加引号和不加引号是都可以的,效果是一样的,比如下面age属性加不加引号都可以访问到的: #但是,不符合规范的属性名必须要加引号 1.比如以数字打头的属性名: var obj = { name: 'wozien', 53age: 16 }在chrome中会报错: 2.数字开头的属性必须用obj[ ]方括号进行访问,如下: var obj = { na
js对象属性 通过点(.) 和 方括号([]) 的不同之处
【JS对象属性的查询和设置】 可以通过点(.) 或 方括号([]) 运算符来获取属性的值。运算符左侧应当是一个表达式,它返回一个对象。对于点(.)来说,右侧必须是一个以属性名称命名的简单标识符。对于方括号([])来说,方括号里必须是一个计算结果为字符串的表达式,这个字符串就是属性的名字:   var author = book.author; //得到book的"author"属性  
JS声明对象时属性名加引号与不加引号的区别
原文地址:http://www.qttc.net/201306336.html 这个问题很好有人关注,但我每一次在声明一个对象属性的时候都要想想要不要给属性加引号?加引号与不加引号有什么区别? 其实在JavaScript中,加引号与不加引号都是一样用,都是有效的。如: var obj = { name : '琼台博客', 'age' :
js 对象属性名不加引号与加引号的区别
js 变量的命名规则  标识符只能由字母、数字、下划线和‘$’组成  数字不可以作为标识符的首字符(纯数字除外:js会自动将数字转化为字符串类型)   JSON 语法: 是 JavaScript 对象表示法语法的子集 1、非数字型键值必须双引号 2、json 值 :  数字(整数或浮点数) 字符串(在双引号中)  逻辑值(true 或 false)
一个简单的例子解释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-js中把一个函数赋给一个对象时带不带括号的区别?
http://segmentfault.com/q/1010000000732577关于闭包概念: http://www.jb51.net/article/24101.htm 它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
javascript调用函数时什么时候加括号,什么时候不用加括号
重点:加括号后表示立即执行,不加括号一般用在触发某个事件后才执行 示例:      描述:         不带括号的调用 function : 函数体对象为参数         带括号的调用 function():立即执行函数后返回的值为参数
在JavaScript中输入的参数什么时候带引号,什么时候不带引号,有什么区别?
在JavaScript中输入的参数什么时候带引号,什么时候不带引号,有什么区别?
js代码中 何时加入引号,何时不加
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>函数传参</title> </head> <style type="text/css"> #div1{ width: 200px; height: 200px
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...
访问对象属性的点表示法和方括号表示法的区别
var person = { name:'gogo' }一般来说,访问对象属性时都使用点表示法,这也是很多面向对象语言中通用的语法。不过在javascript中,也可以使用方括号表示法来访问对象的属性。在使用方括号语法时,应该把属性以字符串的形式放在方括号中,如:alert(person["name"]); //gogo alert(person.nam
shell 判断变量是否为空,变量加不加双引号的区别
对于 if 条件语句里所有的字符串的比较时,最好是在变量的外面加上双引号。特别是 if -n 判断字符串是否为null时候(null意思就是字符串长度为0),一定要加上双引号。
获取对象属性的点方法和中括号法的区别
今天写题的时候遇到用点取不到对象这个问题, 题目大致是这个样子 console.log($element);//{BranchId: "0003", CHName: "哈哈哈", ShortName: "嘻嘻嘻"} console.log(CacheData.columns[0])//BranchId; console.log(CacheData.columns[1]
Linux_Bash脚本_单引号’双引号“”反引号`小括号()中括号[]大括号{}
一、单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题。 因为空格在linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错。为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外。所以,两者基本上没有什么区别,除非在内容中遇到
javascript使用方括号([])引用对象的属性和方法
在JavaScript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法) 很简单,即: 对象名.属性(方法)名 除此之外,还可以用方括号的形式来引用: 对象名["属性(方法)名"] 注意,这里的方法名和属性名是一个字符串,而非原先点号后面的标识符,例如: var arr=new Array(); //为数组添加一个元素 arr["push"]("Leepy");
bash编程中,变量“用双引号”和“不用双引号”的区别
变量用双引号括起来的意义 推荐今后编程中变量必须用双引号括起来同事遇到一个bash编程上的bug,一时没有解决方法。 后经百度,虽然找不到问题直接原因的出处;但是在知乎上看到了有人做出了合理的解释。shell编程中用双引号引用参数和不用双引号有什么区别? - 知乎 https://www.zhihu.com/question/33466555变量用双引号括起来的意义如果变量不用双引号括起来,比如
el表达式在js中有时需要加引号才可以用,何时需要加引号,何时不需要加引号
本以为js是弱语言,对语言的要求不高,但是今天遇见一个坑,在js代码中编写el表达式,却一直没反应,代码如下 $(function(){ var msg = ${msg}; if(msg!=null && msg != ''){ alert(msg); } }); 在此代码中,接收服务器返回的msg信息,用el表达式取值,却一直没有反应,应该在el表达式两边加引号,如下:
js中中括号,大括号使用详解
js中中括号,大括号使用详解
JS中访问对象属性的点表示法和方括号表示法
点表示法&amp;amp;&amp;amp;方括号表示法从功能上看,这两种访问对象属性的方法没有任何区别。但方括号语法的主要优点是可以通过变量来访问属性,例如: var propertyName = &quot;name&quot;; alert(person[propertyName]); //&quot;Nicholas&quot; 如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,这时候就可以使用方括号表示法来访问它们...
JavaScript:将key名不带双引号的JSON字符串转换成JSON对象的方法
根据json.org上面的描述,JSON对象是由对象成员组成,而成员是由key-value键值组成。key值是一个字符串: 字符串由Unicode字符组成,用双引号包围,用反斜杠转义。可以是单个字符。用法跟C或Java里的字符串的用法相似。 但是,在现实应用中,很少有程序员知道JSON里的key需要用双引号包围,因为大多数的浏览器里并不需要使用双引号。所以,为什么多此一举要多写两个双引
js 对象中的中括号与点在调用对象属性时的区别
一、调用属性 一般来说一个对象的属性的调用都是用一个 . 来调用,就像下面这个例子一样 var obj={ test:'wtf' } console.log(obj.test) 输出了wtf 但js还有另一个操作符调用对象的属性就是[ ],例子如下 var obj={ test:'wtf' } var index='test' console.log(obj[ind
JavaScript对象取值方式分析
定义一个对象 var a={key1:"a",key2:"b"}; 取值方式一 var value1=a['key1']; 取值方式二 var value2=a.key1; 分析: 两种取值方式在语法上都没有问题,但是第二种取值方式在性能上优于第一种方式; 但是第二种方式无法应用于动态取值问题,动态取值的时候需要用第一种方式。 var value3="key2"; var
JavaScript小括号、中括号、大括号的多义性
小括号 JavaScript中小括号有五种语义: 语义1,函数声明时参数表 [javascript] view plaincopy func(arg1,arg2){   // ...   }   语义2,和一些语句联合使用以达到某些限定作用 [javascript] view plaincopy
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 ...
javascript中{},[]中括号,大括号的含义和使用
一、{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。 如:var LangShen = {"Name":"Langshen","AGE":"28"};  上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,  所以访问时,应该用.(点)来层层访问:LangShen.Name、LangShen.AGE,当然我们也可以用数组的
new 对象加括号和不加括号的区别
原文:http://www.java123.net/v/951963.html 在new对象的时候有加上(),有不加(),不知道这个到底是什么区别? 比如: CBase *base = new CDerived(); CBase *base = new CDeviced; 很多人都说,加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数。这是有问题
EL取map的值用中括号
背景:servlet中的map,提交到JSP: Map sParaTemp = new HashMap(); sParaTemp.put("time", currentTime); sParaTemp.put("count", count)); request.setAttribute("trademap", sParaTemp); request.getRequestDispatche
记录,javascript中对象的属性名是字符串,却可以不用引号
问题描述:今日看书,里面介绍js的对象的属性名是包括空字符串在内的所以字符串 问题来了,我们平时定义的对象如下,是没有引号""or''的 var someone  = {     first_name : "Jeo",     second_name : "Mike" }; 所以我写了以下程序测试, var stooge = {     "first_name" : "Jeo",
js对象字面量属性名加不加引号的问题
1.js对象  js 对象的属性名可以不用引号括起,这是 js 语法约定的 属性名可以是包括空字符集在内的任何字符串  如果属性名是一个合法的标识符,而且不是保留字,则不强制用引号括住属性名。否则必须使用且只能以obj[&quot;属性名称&quot;]形式访问  逗号分隔多个名值对 var myObj = { age : 19, 'last-name':'wang', firstNa...
PHP数组键值使用单引号和双引号和无符号的区别
第一种:$array['key']此单引号键值模式可以直接被解析为一个数组即$array 第二种:$array["key"]此双引号键值模式,先执行的是"key",判断是否有定义的PHP变量存在,在解析为数组即$array 第三种:$array[key]此为无单双引号键值模式,会先分析局部作用于是否有key键值定义的常量存在,即使用define('key','val'),然后解析数组即$arr
JavaScript/jQuery中函数调用加不加括号,加不加引号的解析
function show(){ alert("XXXX"); } 触发show方法我们看到过得的会有三种写法: 1.$(this).click(show); 2:$(this).click("show()"); 3.$(this).click(show()); 那么这三种写法有什么区别呢? 一、$(this).click(   );括号内是作为一个参数传递,要把show函数传递进
TCL双引号 花括号 中括号
TCL的执行分为两步,第一步替换,第二步执行。。 在方括号[]中的内容将在替换步骤中计算出结果,整体替换为结果 在双引号和花括号中的内容将视为一个参数 在双引号中的内容在替换步骤中,执行替换。。例如, puts "The current stock value is $varName"  中的varName将会被替换为varName的值。 大多在反斜杠后的内容表示不被替换。。如 \",但有
浅谈JS中中括号([])用法
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。 中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 中括号运算符可以用纯数字为属性名。点运算符不能。 中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。     例一:              /**       * 在JavaScript里面 . 可以理解成 的       *
javascript中setInterval和setTimeout第一个参数加与不加引号的区别
今天项目中的轮播特效用到了setInterval函数,程序写好后,运行正常也是需要的效果。随后将写好代码添加到了window.onload中,再运行程序,控制台抛出异常:Uncaught ReferenceError: showAuto is not defined;还是对setInterval理解不够深刻,开始度娘相关资料,还真是理解不深。附上代码说明。 初始代码: var t =
TCL中双引号和大括号的区别
TCL解释器对(1)双引号(" ")中的各种分隔符不作处理,但是对于换行符(\n)及$和[ ]两种置换符会照常处理。                        (2)花括号({ })对各种特殊字符都不会做特殊处理,跟普通字符一样处理。 实例 (1)换行符 % set x "\na\nb" a b % set x {\na\nb} \na\nb (2)$符 % set y "
文章热词 JavaScript JavaScript培训 JavaScript课程 JavaScript学习 JavaScript教程
相关热词 c++ 变量 访问private c++ 头文件有的用双引号 c++ 变量和对象 为什么学python 为什么要学习python