在多行变量声明的第一行末尾写一个逗号会在 Javascript 中引发错误

Writing a comma at the end of the first line of a multi-line variable declaration throws an error in Javascript

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

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

您认为问题是什么?

我怀疑您正试图在与这些变量声明不同的函数中使用 $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为局部变量,其他都是对全局变量的赋值,用逗号分隔。