2017-07-29 67 views
0

我有这样的代码 -使用Javascript - 阵列保持被解释为字符串

var status = ["A", "B", "C", "D", "E", "F"]; 
 

 

 
$(function() { 
 
    console.log(window.status); 
 
    console.log(typeof window.status); 
 
    var status = ["A", "B", "C", "D", "E", "F"]; 
 
    console.log(status); 
 
    console.log(typeof status); 
 

 
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$(function() {});var status声明为一个数组。 然而,当把它记录到控制台时,它显示为一个字符串。

我在ready函数里面重复同样的事情,它现在的行为就像它现在这样。这段代码有什么问题?

+0

当运行该代码,它示出了一个阵列和一个对象。问题是什么 ? –

+1

@DalvinderSingh检查滚动条;) – Andreas

+0

对我来说它显示日志为 - A,B,C,D,E,F和typeof显示字符串。这个浏览器是否特定? 最后两个日志显示为一个数组,因为他们应该。 –

回答

2

检查与其他名称其使用缺省由JavaScript

var my_status = ["A", "B", "C", "D", "E", "F"]; 
 

 

 
$(function() { 
 
    console.log(window.my_status); 
 
    console.log(typeof window.my_status); 
 
    var status = ["A", "B", "C", "D", "E", "F"]; 
 
    console.log(status); 
 
    console.log(typeof status); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

谢谢,我没有意识到这个地位是由JS采取的。 –

3

window.status是定义浏览器状态栏文本(字符串)的属性。因此你的数组会自动转换为一个字符串。

如果移动status到自己的封闭,例如通过(function(){...})();内包装,并通过status,不window.status访问它你可以防止这种情况发生。