0

我在我正在处理的应用程序中编写了以下变量声明

var $currentPage = $(".js-page") 
        $form = $("#new_location"),
        $body = $("body"),
        $submit = $form.find(".js-submit"),
        $elevationAngleKnob = $(".js-knob-elevation-angle"),
        $sunbathingTimeKnob = $(".js-knob-sunbathing-time"),
        $sunbathingStartKnob = $(".js-knob-sunbathing-start"),
        $sunbathingEndKnob = $(".js-knob-sunbathing-end"),
        $currentTimeKnob = $(".js-knob-current-time"),
        $nearestTimeKnob = $(".js-knob-nearest-time"),
        $editLocationForms = $(".edit_location");

如果我不以逗号结束声明的第一行,代码就可以正常工作。

如果我以逗号结束第一行(可能有人认为是正确的),那么我会收到这个奇怪的错误:

Uncaught ReferenceError: $elevationAngleKnob is not defined

你认为是什么问题?

4

1 回答 1

4

我怀疑您正试图$elevationAngleKnob在与这些变量声明不同的函数中使用。当你在第一行的末尾加上逗号时,所有这些变量都是局部变量,如果你试图在另一个函数中访问它们,你会得到一个错误。如果没有逗号,自动分号插入会将其更改为:

var $currentPage = $(".js-page");
$form = $("#new_location"),
    $body = $("body"),
    $submit = $form.find(".js-submit"),
    $elevationAngleKnob = $(".js-knob-elevation-angle"),
    $sunbathingTimeKnob = $(".js-knob-sunbathing-time"),
    $sunbathingStartKnob = $(".js-knob-sunbathing-start"),
    $sunbathingEndKnob = $(".js-knob-sunbathing-end"),
    $currentTimeKnob = $(".js-knob-current-time"),
    $nearestTimeKnob = $(".js-knob-nearest-time"),
    $editLocationForms = $(".edit_location");

这声明$currentPage为局部变量,其他所有内容都是对全局变量的赋值,由逗号运算符分隔。

于 2015-07-28T00:41:26.963 回答