SyntaxError:意外令牌:'['

时间:2018-02-19 05:20:24

标签: javascript html

我将Dreamweaver用于表单上的学校项目,并且不断提出 Javascript中的“Missing Semicolon”。

我使用firefox作为调试器,我有以下代码的错误。错误说 “SyntaxError:意外令牌:'['”

下面是我遇到问题的代码:

// JavaScript Document

var Pizza=document.forms["Pizzaform"];
var Crust_Price = new Array();
**var Crust_Price ["Traditional"]=13;
var Crust_Price ["Deep_Pan"]=13;
var Crust_Price ["Thin_&_Crispy"]=13;
var Crust_Price ["Stuffed_Crust"]=16;
var Crust_Price ["Glutten_Free_Base"]=16;
///////////////////////////////////////////////////////////
var Mozzarella_Price = new Array();
var Mozzarella_Price ["Extra"]=2;
///////////////////////////////////////////////////////////
var Wing_Price = new Array();
var Wing_Price ["Seasoned_Wings_18PK"]=19.95;
var Wing_Price ["Naked_Wings_18PK"]=19.95;
var Wing_Price ["Seasoned_Wings_10PK"]=11.95;
var Wing_Price ["Naked_Wings_10PK"]=11.95;
var Wing_Price ["Seasoned_Wings_6PK"]=7.95;
var Wing_Price ["Naked_Wings_6PK"]=7.95;
///////////////////////////////////////////////////////////
var Drink_Price = new Array();
var Drink_Price ["Pepsi"]=4.95;
var Drink_Price ["Pepsi_Max"]=4.95;
var Drink_Price ["7_Up"]=4.95;

由于

3 个答案:

答案 0 :(得分:1)

您可以使用以下方式分配数组和对象,例如

var Crust_Price = new Array();

因为如果要在其中分配属性,则声明了一个数组 你只需要做

Crust_Price[0]=13;

否则您要创建一个可分配键值值的对象 所以你可以声明一个这样的对象

var Crust_Price = new Object();

现在你可以像这样分配一个属性

Crust_Price["Deep_Pan"]=13;

Crust_Price ["&Thin_放大器; _Crispy"] = 13;

或者您可以直接创建像

这样的对象
var Crust_Price = {};

现在分配一个像这样的属性

Crust_Price["Stuffed_Crust"]=16;

希望你能以更好的方式理解。

答案 1 :(得分:0)

此错误:

  

错误说"语法错误:意外令牌:' ['"

特别是由于在数组名称和开口方括号之间有一个空格:

<强>错误:

Crust_Price [...];

<强>正确

Crust_Price[...]

但这只是第一个问题。您遇到的下一个问题是重新声明每个数组名称:

<强>错误

var Wing_Price = new Array();
var Wing_Price ["Seasoned_Wings_18PK"]=19.95;
var Wing_Price ["Naked_Wings_18PK"]=19.95;

<强>正确

var Wing_Price = new Array();
Wing_Price["Seasoned_Wings_18PK"]=19.95;
Wing_Price["Naked_Wings_18PK"]=19.95;

请找到以下工作代码:

&#13;
&#13;
var Pizza=document.forms["Pizzaform"];
var Crust_Price = [];

Crust_Price["Traditional"]=13;
Crust_Price["Deep_Pan"]=13;
Crust_Price["Thin_&_Crispy"]=13;
Crust_Price["Stuffed_Crust"]=16;
Crust_Price["Glutten_Free_Base"]=16;
///////////////////////////////////////////////////////////
var Mozzarella_Price = [];

Mozzarella_Price["Extra"]=2;
///////////////////////////////////////////////////////////
var Wing_Price = []

Wing_Price["Seasoned_Wings_18PK"]=19.95;
Wing_Price["Naked_Wings_18PK"]=19.95;
Wing_Price["Seasoned_Wings_10PK"]=11.95;
Wing_Price["Naked_Wings_10PK"]=11.95;
Wing_Price["Seasoned_Wings_6PK"]=7.95;
Wing_Price["Naked_Wings_6PK"]=7.95;
///////////////////////////////////////////////////////////
var Drink_Price = [];

Drink_Price ["Pepsi"]=4.95;
Drink_Price ["Pepsi_Max"]=4.95;
Drink_Price ["7_Up"]=4.95;
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您收到SyntaxError,因为您的代码中的某些语法不是有效的JavaScript。

这样的一行有效:

const letters = ['h', 'i'];

这样的一行有效:

letters[0] = 'h';

这样的一行有效:

const letters[0] = 'h';

为什么最后的例子无效?好吧,letters[0]引用letters对象上名为“0”的属性。您可以分配属性(如第二个示例中所示),但不能声明属性。换句话说,您不能在属性之前使用varletconst。创建或更新属性所需要做的就是为其赋值。

您的代码还存在其他问题。您正在使用数组,但不使用索引。数组用于有序数据列表。您的数据似乎是命名和无序的,因此您最好使用普通的旧对象而不是数组。

例如,您可以执行以下操作:

const crustPrice = {
    traditional     : 13,
    deepPan         : 13,
    thinCrispy      : 13;
    stuffedCrust    : 16;
    gluttenFreeBase : 16;
};

然后,要使用其中一个属性的值,我们可以执行以下操作:

console.log(crustPrice.thinCrispy);