IE会引发预期的冒号错误,适用于Chrome吗?具有对象文字和函数的对象数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IE会引发预期的冒号错误,适用于Chrome吗?具有对象文字和函数的对象数组相关的知识,希望对你有一定的参考价值。
我正在编写一个从文件中抓取文本并测试文本的函数。它在Chrome上运行顺畅,但在IE上却没有?从我在网上找到的,IE应该支持我正在使用的所有内容。当我在IE上运行它时,它会在每个test(data)
结束时抛出“预期':'”错误
现行代码:
function testText(callback)
{
const filePaths =
[
{
url: "http://example.com/example.txt",
test(data)
{
const compareText = data.localeCompare(trigger, "en", {sensitivity: "base"});
if (compareText == 0)
{
globalNotifEnabled = true;
return true;
}
return false;
}
},
{
url: "http://www.example.com/UserExceptions.txt",
test(data)
{
const rawUsers = data;
const userExceptions = rawUsers.split(';');
if (userExceptions.indexOf(currentUser) > -1)
{
console.log("User exception is: " + userExceptions[userExceptions.indexOf(currentUser)]);
return false;
}
return true;
}
},
{
url: "http://www.example.com/test/notification.txt",
test(data)
{
globalNotification = data;
notify(globalNotification);
console.log("Global notification displayed.");
return true;
}
}
];
(function getFiles(currentStage)
{
$.get(filePaths[currentStage].url, function(data)
{
if (filePaths[currentStage].test(data))
{
if (filePaths.length > currentStage + 1) getFiles(currentStage + 1)
else callback(null, "Success!")
}
else callback(Error(`Stage ${currentStage}'s test failed.`, null))
}, 'text')
.fail(function()
{
console.log("Global notifications failed at stage: " + currentStage);
});
})(0);
}
有没有理由让Chrome允许我访问test(data)
但是IE要求我有类似blah: function test(data)
的东西?我尝试修改对象,使其看起来像:
url: "http://example.com/example.txt",
setTest: function(test(data))
{
const compareText = data.localeCompare(trigger, "en", {sensitivity: "base"});
if (compareText == 0)
{
globalNotifEnabled = true;
return true;
}
return false;
}
...并在getFiles
函数中调用它,如:
if (filePaths[currentStage].setTest)
...
它不会在IE中抛出错误,但它实际上并没有使用像getFiles
部分中我需要它的函数。
你正在使用method syntax:
{
url: "http://example.com/example.txt",
test(data) // <==== here
{
// ...
}
}
这是在ES2015中添加的。 IE11不支持它(没有IE版本),但是现代浏览器都支持它。 (我不认为IE11能够正确支持任何ES2015,因为它在2013年发布,微软没有为IE的现有版本添加功能。它有let
,但for
循环中的语义错误。)
如您所见,答案是使用属性初始值设定项:
{
url: "http://example.com/example.txt",
test: function(data)
// -----^^^^^^^^^^
{
// ...
}
}
或者当然,编写现代javascript并使用Babel等转换器将代码转换为IE的ES5(可能还有polyfill)。
以上是关于IE会引发预期的冒号错误,适用于Chrome吗?具有对象文字和函数的对象数组的主要内容,如果未能解决你的问题,请参考以下文章
样式适用于 Firefox 和 IE8,但不适用于 Chrome(居中与 text-align=left)
Angular 6 MatSnackBar 适用于 Chrome 但不适用于 IE11