JS语法错误 - 铬 - 数组解构

JS syntaxError - chrome - Array destructuring

本文关键字:数组 错误 JS 语法      更新时间:2023-09-26

以下代码在火狐浏览器上运行良好,但在 chrome 上抛出错误 - SyntaxError: Unexpected token [

我希望这段代码在给定的div 中附加日期。

var output = document.getElementById('output');
var classes = ['history', 'biology', 'physics'];
var students = 90; 
function getExamDate() {
  return [20, ' March ', 2013, ' 9AM'];
}
var [date, month, year, time] = getExamDate();
output.innerHTML(date + month + year + time);

这种说法

var [date, month, year, time] = getExamDate();

是一个解构任务。它是 ECMAScript 6 的一部分。它在大多数浏览器中尚不可用。

现在,您最好避免分配所有这些变量:

output.innerHTML = getExamDate().join('');

(是的,您有另一个错误:innerHTML作为属性而不是函数访问(

这是一篇关于解构作业的很好的介绍性文章。

工作演示

您正在使用ECMAScript 6称为Array destructuring的功能,该功能还不是标准。只有像chrome和Firefox这样的现代浏览器已经实现了其中一些功能。从函数返回多个值时,数组解构是有用的简写,因为我们不再需要环绕对象。

在您的情况下,您可以调整代码以返回一个简单的数组,如下面的代码片段所示。

我使用isNumber函数来检查数组项是否为数字。如果是字符串,则删除其周围的引号。您将以完全相同的输出结束您。

var output = document.getElementById('output');
var classes = ['history', 'biology', 'physics'];
var students = 90; 
function getExamDate() {
  return [20, ' March ', 2013, ' 9AM'];
}
var temp = getExamDate();
for(var i = 0; i < temp.length; i++) {
    var str = temp[i];
    if(!isNumber(str)) {
       str = str.replace(/"/g, '');
    }
    console.log(str);
} 
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}