以下是示例代码:
console.log('params is empty: '+(params == ''));
console.log('params: '+params);
console.log('df: '+params['df']);
$.each(params, function(p_name, p_val){
console.log(p_name+': '+p_val);
});
并回复:
params is empty: true
params:
df: 15.03.2012
这是怎么回事?
答案 0 :(得分:3)
据推测(当你展示使用预定义变量时必须这样,所以除了从你正在执行的测试中得出结论之外,我们无法知道实际中的内容是什么)因为params
是数组而不是对象。
数组用于通过数字键保存有序的值序列。
对象具有(相对)任意键的值。
对数组进行字符串化只会加入数字键。因此,如果存在数字键,则将其与空字符串进行比较只会给出错误值。
$.each
注意到它正在迭代一个数组而只是命中数字键。
df
不是数字键。
答案 1 :(得分:1)
没什么奇怪的。 Params只是一个对象(内置类型Array)。
console.log('params is empty: '+(params == '')); //result of Array.toString on empty array = ""
console.log('params: '+params); //result of Array.toString on empty array = ""
console.log('df: '+params['df']); //if params is an object and you do params.df='15.03.2012' then params['df']='15.03.2012'.
$.each(params, function(p_name, p_val){
console.log(p_name+': '+p_val);
});