javascript 名称以 $ 开头的变量有时会产生错误

javascript variables with names starting with a $ are sometimes producing errors

直到最近,我一直使用以 $ 开头的 javascript 变量名称来表示变量包含 jQuery 值,即:$buttons = $( 'button' ); 但是,两天前,当我将页面加载到最新版本的 Chrome:

时尝试此操作时,我开始出现此错误
Notice: Undefined variable: buttons
500 Internal Server Error - ContextErrorException

Stack Trace
in src/AppBundle/Controller/pages/myVideos.php at line 6086  -

6086.                               function button_Click( This ) { 
6087.                                 var $buttons = $( 'button' ); 
6088.                               } // End of button_Click( This ) function. 

但是,如果我从按钮变量 declaration/assignment 中删除 $,则不会发生此错误。

这对我来说似乎很奇怪,无论我是否在按钮之前有 $,在同一页面中,我在其他函数中有很多其他变量声明使用前导 $,但它们不会产生这些错误,这是一个示例:

function ytPictureSelect_Click() {
  const ELEMENT_PATH_URI     = 'tr:first>td.webvideourlURI>span';
  const ELEMENT_PATH_PICTURE = 'tr:eq(1)>td.webvideourlPicture';

  var   This                 = ( ( this.tagName === 'TD' )
                                 ? this
                                 : event.target );
  var   $This                = $( This );
  var   $element             = $This.closest( 'table' );
  var   $table               = $element.parent().closest( 'table' );
  var   $webvideourlURI      = $table.find( ELEMENT_PATH_URI );
  var   youTube              = ( $webvideourlURI.attr( 'youTube' ) === 'true' );
  var   embedded             = ( $webvideourlURI.attr( 'embed' ) === 'true' );
  var   ytId                 = $webvideourlURI.attr( 'ytId' );
  var   $webvideourlPictures = $table.find( ELEMENT_PATH_PICTURE )
                               .children( 'textarea, span' );
  :

} // End of ytPictureSelect_Click() function.

任何人都知道为什么 buttonClick 函数不 喜欢 领先的 $,但使用此命名约定的所有其他函数,好吗?

更新:

我正在使用 Symfony ver 2.8 和 PHP 创建我的页面,页面被放入一个数组,然后数组的内容被发送到浏览器如下,减去实际发送的代码页面:

$strMAINs[] = <<<"MAIN"
    <script>
      function button_Click( This ) { 
        var $buttons = $( 'button' ); 
      } // End of button_Click( This )
    </script>
MAIN;

上面的代码是我所说的错误的来源,还有另一个类似的语句创建了另一个有效的函数,即使它有 $ 前缀变量。

谢谢

charlietfl,关于这是一个 PHP 错误是正确的。我的第二个回复详细说明了发生的事情。

为了使这些类型的替换更清晰,我使用 ${php-variable-name},但这只是一种约定,据我所知,没有办法强制使用 $ {...} 与简单的 $.太糟糕了,因为当我忘记从双引号切换到单引号时,它会对我的 jQuery 语句造成严重破坏。