我有这段代码 -
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
被声明为数组。
然而,当它将其记录到控制台时,它会显示为String。
我在ready函数中重复了同样的事情,它的行为与此时一样。这段代码出了什么问题?
答案 0 :(得分:3)
window.status
是定义浏览器状态栏文本(字符串)的属性。因此,您的数组会自动转换为字符串。
如果您将status
移到自己的闭包中,可以防止这种情况发生,例如将其包裹在(function(){...})();
中并通过status
访问它,而不是window.status
答案 1 :(得分: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>