奇怪的js数组行为
strange js array behavior
下面是示例代码:
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
这怎么可能?
假设(必须按照您所展示的方式使用预定义的变量,这样我们就无法知道实际上是什么,除非从您对其执行的测试中得出结论),因为params
是数组而不是对象。
数组的设计目的是用数字键保存有序的值序列。
对象的值具有(相对)任意键。
字符串化数组只连接数字键。因此,如果有数字键,将其与空字符串进行比较只会给出一个假值。
$.each
注意到它在数组上迭代,并且只命中数字键。
df
不是数字键。
没有什么奇怪的。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);
});
相关文章:
- 在数组JS中查找三个重复项
- 比较二维数组js
- 从数组(JS)中的对象调用函数
- 检查对象是否已被推入数组 Js
- 将CSV文件转换为JSON数组JS
- 解析多维数组JS的数组并记录索引
- 如何遍历直接传递到灰尘的数组.js
- 如何使用 D3 选择 JSON 数组.js 使用 .算子
- JavaScript 变量中的 PHP 数组 - JS 元素
- 将数据复制到 JavaScript D3 中的数组.js然后绘制散点图
- 基于数组JS中的值创建按钮
- 创建数组JS
- 按频率排序子字符串数组-JS
- 将数组js变量传递给php
- 使用不带嵌套循环的数组过滤对象数组js
- 创建封装数组JS
- 创建多dim数组(JS)
- 创建for循环对象并将它们压入数组js中
- 将数组JS中的所有项相乘
- 如何从二维数组(JS)中获取网格的坐标