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

问题描述

直到最近,我一直使用以 $ 开头的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. 

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

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

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语句。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...