2014-12-31 41 views
0

如果我写在JS控制台为什么这不算数组?

var status = ["POR ENTREGAR","POR ENTREGAR","POR ENTREGAR"]; 
status; 

它评估为字符串以下 “POR ENTREGAR,POR ENTREGAR,POR ENTREGAR” 这是为什么?我疯了

如果你然后写状态[0]它返回P;请在回答之前尝试使用另一个数组,以便您可以看到控制台如何以不同方式打印字符串和数组。

+2

哪个控制台?什么浏览器?你可能会看到数组的'toString()'表示。 'typeof status'返回什么? – chiliNUT

+1

因为JS控制台只能输出字符串?尝试'console.dir(status);' –

+0

你看到那个字符串后做'警报(状态);'如果是这样,这就是它看起来,它实际上是一个数组 – DelightedD0D

回答

2

JavaScript带有窗口对象的内置状态属性,该属性是一个空字符串。将变量名称更改为状态以外的其他名称,您将很乐意继续。

不知道为什么downvote。核实。

一些代码说明了同样的问题。

var status = {} 
    status ---> "[object Object]" 
    typeof status ---> "string" 
+0

为什么投票它可能是正确的 – zardilior

+0

我认为这个答案实际上暗示的原因,可能没有意识到它。编辑:Kooilnc似乎已经得到它。 – ajp15243

+0

他是正确的检查它 – zardilior

1

status是一个(排序的)reserved word,以使阵列分配给另一个变量名,或者非全球范围内分配给它:

// [status] assigned within the global (window) context 
 
var status = ["POR ENTREGAR","POR ENTREGAR","POR ENTREGAR"]; 
 
var mystatus = ["POR ENTREGAR","POR ENTREGAR","POR ENTREGAR"]; 
 
Helpers.log2Screen('`status` is array? ', (status instanceof Array).yn()); 
 
Helpers.log2Screen('`mystatus` is array? ', (mystatus instanceof Array).yn()); 
 

 
statusStatus(); 
 

 
function statusStatus() { 
 
    // [status] assigned within the statusStatus context 
 
    var status = ["POR ENTREGAR","POR ENTREGAR","POR ENTREGAR"]; 
 
    Helpers.log2Screen('`status` (in `statusStatus` context) is array? ', 
 
        (status instanceof Array).yn()); 
 
}
<script src="http://kooiinc.github.io/JSHelpers/Helpers-min.js"></script>

如果状态未在全局中分配(即window )的情况下,你很好,请参阅片段中的statusStatus。否则,您将覆盖预定义的现有window.status。实际上,window.status更改浏览器状态栏上的文本,这就是为什么它总是自动绑定到一个字符串值(注意:较新的浏览器似乎放弃了状态栏(chrome,firefox)或只读(IE),但由此无用的窗口属性仍然存在)。

0

如果你正在寻找比字符串格式更阵列格式,可以考虑使用console.dir(状态)或console.table(状态)

相关问题