Javascript 设置数组';s长度为0似乎不会清空数组
我使用全局javascript变量在Ajax请求后存储一些数据。它用于在jqueryui日期选择器上标记日期,并以Javascript 设置数组';s长度为0似乎不会清空数组,javascript,jquery,Javascript,Jquery,我使用全局javascript变量在Ajax请求后存储一些数据。它用于在jqueryui日期选择器上标记日期,并以array[date]=type\u of_date 这是我用来计算数组的函数 当然,这两个日志是用于调试的。问题是,即使执行了这段代码,数组也永远不会被清除。我的语法是否错误,或者我是否误解了全局变量和/或数组?arr\U exceptie[0]指定的索引可能是非数字的 设置length=0仅清除以数字命名的属性(per),因此不清除具有非数字名称的属性。例如,如果设置date\u
array[date]=type\u of_date
这是我用来计算数组的函数
当然,这两个日志是用于调试的。问题是,即使执行了这段代码,数组也永远不会被清除。我的语法是否错误,或者我是否误解了全局变量和/或数组?arr\U exceptie[0]指定的索引可能是非数字的 设置
length=0
仅清除以数字命名的属性(per),因此不清除具有非数字名称的属性。例如,如果设置date\u zile\u ore\u modificate['foo']
和date\u zile\u ore\u modificate[5]
,则设置date\u zile\u ore\u modificate.length=0
清除5
属性,但不清除foo
属性
但是,将变量设置为全新的数组显然会清除所有属性,因为它完全消除了旧的数组对象。因此,只要使用
window.date_zile_ore_modificate = [];
window.date_zile_nelucratoare = [];
在所有情况下,消除您最初的条件
此外,如果属性名称完全是非数字的,则可能应该使用普通对象而不是数组(因为数组实际上只适用于数字索引数据):
arr\u exceptie[0]
指定的索引可能不是数字
设置length=0
仅清除以数字命名的属性(per),因此不清除具有非数字名称的属性。例如,如果设置date\u zile\u ore\u modificate['foo']
和date\u zile\u ore\u modificate[5]
,则设置date\u zile\u ore\u modificate.length=0
清除5
属性,但不清除foo
属性
但是,将变量设置为全新的数组显然会清除所有属性,因为它完全消除了旧的数组对象。因此,只要使用
window.date_zile_ore_modificate = [];
window.date_zile_nelucratoare = [];
在所有情况下,消除您最初的条件
此外,如果属性名称完全是非数字的,则可能应该使用普通对象而不是数组(因为数组实际上只适用于数字索引数据):
为什么不
date\u zile\u ore\u modificate=[]
?此外,我认为我从未见过窗口。
在变量脚本中使用了这么多-它们真的是必要的吗?您是否有复杂的作用域问题?array.length=0
应该可以,但我个人认为@SmokeyHP所说的长度属性不应该是可变的IMO@MattBurland它不会在ajax之前运行,因为ajax调用是同步的?此外,我认为我从未见过窗口。
在变量脚本中使用了这么多-它们真的是必要的吗?您是否有复杂的作用域问题?array.length=0
应该可以,但我个人认为@SmokeyHP所说的长度属性不应该是可变的IMO@MattBurland它不会在ajax之前运行,因为ajax调用是同步的。在IE上,每当我尝试window.date\u zile\u ore\u modificate=[]代码>我得到一个“未定义”错误。编辑,不必担心。未定义的错误来自我试图在禁用开发工具的情况下使用IE上的console.log。好的,这只有一个问题。在IE上,每当我尝试window.date\u zile\u ore\u modificate=[]代码>我得到一个“未定义”错误。编辑,不必担心。未定义的错误来自我试图在禁用开发人员工具的情况下在IE上使用console.log。
window.date_zile_ore_modificate = {};
window.date_zile_nelucratoare = {};