Javascript Backbone.js的作用域问题

Javascript Backbone.js的作用域问题,javascript,scoping,Javascript,Scoping,我不知道为什么我不再能够访问我的变量。基本上,我假设当appendUnitsIfHasValue函数运行时,它应该可以访问宽度、长度、高度和重量。我也应该能够操纵变量 注意:console.log打印“我应该有权访问东西”;然而,程序一旦到达下一行就会爆炸。它说“未捕获引用错误:未定义宽度” 最终,我希望能够在调用函数时访问变量,并能够更改CreateItem函数中包含的值。提前感谢您的帮助 CatalogApp.prototype.createItem = function(event) {

我不知道为什么我不再能够访问我的变量。基本上,我假设当appendUnitsIfHasValue函数运行时,它应该可以访问宽度、长度、高度和重量。我也应该能够操纵变量

注意:console.log打印“我应该有权访问东西”;然而,程序一旦到达下一行就会爆炸。它说“未捕获引用错误:未定义宽度”

最终,我希望能够在调用函数时访问变量,并能够更改CreateItem函数中包含的值。提前感谢您的帮助

CatalogApp.prototype.createItem = function(event) {
  event.preventDefault()
  submittedForm = this
  var name = submittedForm["name"].value
  var description = submittedForm["description"].value
  var width = submittedForm["width"].value
  var length = submittedForm["length"].value
  var height = submittedForm["height"].value
  var weight = submittedForm["weight"].value
  that.appendUnitsIfHasValue(width, length, height, weight)
}

CatalogApp.prototype.appendUnitsIfHasValue = function(a,b,c,d) {
  console.log("I SHOULD HAVE ACCESS TO STUFF")
  if (width != "") {width+=' '+DIMENSIONSUNIT} else {width = "N/A"}
  if (length != "") {length+=' '+DIMENSIONSUNIT} else {length = "N/A"}
  if (height != "") {height+=' '+DIMENSIONSUNIT} else {height = "N/A"}
  if (weight != "") {weight+=' '+WEIGHTUNIT} else {weight = "N/A"}
}

您不应该有权访问这些变量。它们在
createItem
函数的范围内定义,并且只能在该函数内访问

你是想做类似的事情吗

CatalogApp.prototype.appendUnitsIfHasValue = function(a,b,c,d) {
  if (a != "") {a+=' '+DIMENSIONSUNIT} else {a = "N/A"}
  if (b != "") {b+=' '+DIMENSIONSUNIT} else {b = "N/A"}
  if (c != "") {c+=' '+DIMENSIONSUNIT} else {c = "N/A"}
  if (d != "") {d+=' '+WEIGHTUNIT} else {d = "N/A"}
}

我认为,由于函数作用域,我仍然可以访问类似于以下内容的变量:var x=5;增量=函数(){x=x+1};增量()