console.log of Array在IE 10,11中返回函数item(){[native code]}

时间:2016-03-16 20:10:53

标签: javascript arrays internet-explorer

我正在尝试调试IE ajax问题。我收集并存储在数组中的数据调用eachItem。然后使用eachItem.join('')将其转换为字符串。但是在它进入这一步之前我控制台.log数组和IE 10和11返回

 function item() {
   [native code]
 }

eachItem.length的console.log返回1.但是我看不到内容。我后来将这些数据推送到ajax并获得一个空数组。但我试图先从这里开始,看看为什么IE似乎没有读取我的数组。

3 个答案:

答案 0 :(得分:4)

Internet Explorer(11)有一个名为a的全局函数,它是只读的。在item之后,item="foo"仍会显示

item.toString()

然而,它可以重新声明。在function item() { [native code] } 之后,var item = foo显示

item.toString()

在小提琴代码中寻找`foo` 的使用

item
没有事先声明的第98行

。我建议在使用之前声明item = serviceTitleRow + eachService + trip_charge; 可能会解决问题。

FWIW ,Javascript严格模式将未声明变量的赋值视为错误,并在大多数时间捕获此错误。由于函数名称标识符与变量标识符没有分隔的名称空间,因此允许重新分配函数名称的值。但是,在尝试更新item的值时,IE中的严格模式会抛出不同的“只读属性不允许”错误,因此严格模式可能有助于在多个浏览器中更早地捕获此错误。

答案 1 :(得分:0)

我有一个未使用var关键字定义的变量。解决了我的问题。

答案 2 :(得分:0)

检查您的代码,以查找是否有任何尚未声明的变量,并且您是直接使用该变量。 例如:

  1. abc = {}可能会在IE中引起问题
  2. var abc = {}将起作用