为了账号安全,请及时绑定邮箱和手机立即绑定

老师 ,为什么上面的代码不能alert,下面的代码可以alert

var ob={};

ob[x]=11;
alert("");



var ob={};

ob[1]=11;
alert("");

正在回答

4 回答

感谢网友帮忙回答。

0 回复 有任何疑惑可以回复我~

obj[x]=22;    输出正确!

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//552c89a80001dc2f03500088.jpgx这个变量未定义

改成这样就行了

var ob={};

ob["x"]=11; 

alert("");

或者

var ob={};

ob.x=11; 

alert("");


0 回复 有任何疑惑可以回复我~
#1

caixiangqi 提问者

谢谢你们~ 老师说的字符串1跟数字1都指的是obj的同一个属性,如下。 var obj={} obj[1]=1; obj['1']=2; obj;//Object{1:2} 但是: ob[x]=11; ob['x']=11; 指的不也应该是同一个属性吗,不是都会toString()一下吗? 我也知道会报错,为什么ob[x]=11;会报错呢,而ob[1]=11; 又不会报错
2015-04-15 回复 有任何疑惑可以回复我~
#2

Sharon_zd 回复 caixiangqi 提问者

如果是1,会自动识别为数字基本类型,然后转换为字符串,但如果是x,就不知道是什么了啊,怎么能toString呢。
2015-05-01 回复 有任何疑惑可以回复我~
#3

arlenhui 回复 caixiangqi 提问者

因为标识符的机制,数字1默认为非标识符也就是非变量,所以无论是1还是“1”都是一样的变量,会tostring成单字符,但是如果是x,若不加双引号来表示字符的话,就会和变量冲突。
2015-05-26 回复 有任何疑惑可以回复我~
因为你上边儿报错了
0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师 ,为什么上面的代码不能alert,下面的代码可以alert

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信