网站地图    收藏   

主页 > 前端 > javascript >

javascript中变量对象的问题

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 在js中变量对象有传值与赋值的各种问题,下面我来给各位同学详细介绍javascript变量对象的一些问题,各位朋友可进入参考。...

今天在网上看到一段代码,如下

 代码如下 复制代码

copytext
console.log(typeof(s)); //function
var s = "1111";
function s(){}
console.log(typeof(s)); //stringconsole.log(typeof(s)); //function
var s = "1111";
function s(){}
console.log(typeof(s)); //string


琢磨了很久,终于想明白了JS中变量对象的问题
第一行输出function,因为当进入作用域后,变量对象会首先扫一遍当然作用域的函数,然后再扫一篇变量,然后存进变量对象,然后再接着开始执行代码。

所以第一行会输出function。

而第四行因为函数是先于变量存入变量对象的,所以在接着的第二行代码s = “1111″,就覆盖了原来的函数变量s,所以输出string


将变量值传入对象时的问题

问题如下:

 代码如下 复制代码
var o = 'left';
    var o1 = {drt:'left'};
    var o2 = ['left'];
  
    var obj = {o:333};
    var obj1 = {o1[drt]:333};
    var obj2 = {o2[0]:333};

代码前三行是变量的几个不同声明方式,即普通变量、对象、数组;后三行分别调用了这3个变量并插入对象。问题来了:
1. 为什么obj1和obj2声明时就直接报错呢?
2. obj没报错,但为什么循环他的属性时,第一个属性直接就叫做“o”,而不是变量o的值"left"呢?

如果我要达到将变量传给对象当属性,将变量值传给对象当属性值的时候,难道只有用:

 代码如下 复制代码

var o1 = {drt:'left'};
var obj3={drt:o1.drt}


类中变量的赋值问题

Javascript中object.prop和object[prop]赋值的区别。

举一个简单的例子,比如要从stocks中获取出开盘价的信息,组成一个openList对象。实现代码如下

 代码如下 复制代码
var stocks = {
 '600000': {'name':'浦发银行', 'open':'9.67', 'new':'9.54'},
 '600004': {'name':'白云机场', 'open':'6.82', 'new':'6.77'},
 '600005': {'name':'武钢股份', 'open':'3.23', 'new':'3.19'},
 '600006': {'name':'东风汽车', 'open':'3.96', 'new':'3.86'}
};
 
var openList = {
 '600000': '9.67',
 '600004': '6.82',
 '600005': '3.23',
 '600006': '3.96'
};
 
var result = {};
var i;
//获得开盘价数据对象
for (i in stocks) {
 //方法1
// result[i] = stocks[i]['open'];
 //方法2
 result.i = stocks[i]['open'];
}

这里方法1,能获取到想要的结果。

但是方法2获取的结果:{i: ”3.96″}。

所以对象.属性,这个属性不能是个变量,像这里的i就成了对象的一个属性被覆盖了。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论