对于MSIE 10上的行为有所不同

肯尼思

以下茉莉花测试适用于PhantomJS或Chrome,但不适用于MSIE 10。

describe("utility", function () {

    var utility = {
        // { A: true, B: true } will become 'AB'
        CombineValues: function (splitValues) {
            var combined = '';
            for (item in splitValues) { // on IE, item is a function, not a string
                if (splitValues[item])  // on IE, this returns false all the time
                    combined = combined + item;
            }
            return combined;
        },

        // 'AB' will become { A: true, B: true }
        SplitValues: function (combined) {
            var splitValues = {};
            for (var i = 0; i < combined.length; i++) {
                splitValues[combined.charAt(i)] = true;
            }

            return splitValues;
        }
    };

    it('CombineValues(SplitValues()) should be idempotent', function () {
        // on MSIE, result is '' instead of 'ABC'
        expect(utility.CombineValues(utility.SplitValues('ABC'))).toBe('ABC');
    });
});

我想念什么?

谢谢!

编辑:在IE上,该项显示为:

function item() {
    [native code]
}
 {
    [prototype] :  function() {     [native code] } ,
    prototype : {...}
} 
贝吉

在Internet Explorer中,window.item是一个功能显然是不可重写的。

通过for (item in …)循环,您将隐式分配给该全局变量,该变量在草率模式下(无提示)失败。尝试添加一个"use strict";,它将引发错误。

使用局部变量:

for (var item in splitValues) …
//   ^^^

在严格模式下,分配给未声明的(在Chrome / Webkit中)全局变量也会失败,在草率模式下,您只是item使用该代码创建了一个全局变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TraitCollectionDidChange对于iPhone X的行为有所不同

Android getDeclaredConstructors()对于Android 28(Pie)的行为有所不同

JSX三元表达对于地图的行为有所不同

为什么ContextMenuOpening的Source对于Canvas和UserControl的行为有所不同?

数组分配输出对于两个代码段的行为有所不同

对于某些cordova版本,地理位置在后台的行为是否有所不同?

与.data中的符号相比,gdb对于.bss中的符号的行为有所不同

为什么reference_wrapper对于内置类型的行为有所不同?

ThreadPool对于调试模式和运行时的行为有所不同

为什么对于相同但按比例缩放的数据,绘图的行为会有所不同?

为什么`-lt`对于字符和字符串的行为有所不同?

为什么hasOwnProperty对于构造函数和实例的行为有所不同?

为什么multiprocessing.Process在Windows和Linux上对于全局对象和函数参数的行为有所不同

对于相同的输入字符串,正则表达式的行为有所不同

在此示例中,为什么max()函数对于两个属性的行为有所不同?

为什么空条件运算符对于==和.Equals()的行为会有所不同?

为什么Python范围对于列表变量和字符串变量的行为似乎有所不同?

为什么在使用ICustomTypeDescriptor时TypeDescriptor.GetProperties对于类型和对象的行为会有所不同

为什么参数的行为对于字符串数组和整数数组会有所不同?

python模拟补丁装饰器对于类方法和单个函数的行为有所不同

SHA256哈希结果在Android和iOS上对于大数字而言有所不同

为什么ANativeWindow_Buffer.stride对于不同的设备有所不同

为什么在存在类型参数默认值的情况下,类型推断对于“ HashMap”和我自己的结构的行为有所不同?

对于进程或轻量级进程,tgid和pid是否有所不同?

R regex编译器对于给定regex的工作方式有所不同

Java泛型对于类和方法的工作方式似乎有所不同

未来与未来 对于此用例,Completablefuture会有所不同吗?

对于MessageBox,String.Format()的对齐方式会有所不同

为什么AWS Lambda计费对于不同的运行时会有所不同?