2

考虑到在学习中心的代码组织部分发布的关于模块模式的最后一个代码片段(下面报告),我试图理解示例中模块的某些方面:

  • 变量声明 ( $items, $container...) 由 分隔,;而函数声明 ( createContainer, buildUrl, showItem, ....) 由 分隔,。为什么?有支架问题吗?
  • 为什么前三个变量( 和 )的$items名称$container$currentItem开头$?这是否意味着用于标识 DOM 片段变量的命名约定(因为javascript允许使用 character $)还是有其他原因?
  • 为什么函数createContainer声明为 usingvar而其他函数 ( buildUrl, showItem,...) 没有var

// 为 jQuery 功能使用模块模式 $( document ).ready(function() {

var feature = (function() {

var $items = $("#myFeature li");
var $container = $("<div class='container'></div>");
var $currentItem = null;
var urlBase = "/foo.php?item=";
var createContainer = function() {
  var $i = $( this );
  var $c = $container.clone().appendTo( $i );
  $i.data( "container", $c );
},
buildUrl = function() {
  return urlBase + $currentItem.attr("id");
},
showItem = function() {
  var $currentItem = $( this );
  getContent( showContent );
},
showItemByIndex = function( idx ) {
  $.proxy( showItem, $items.get( idx ) );
},
getContent = function( callback ) {
  $currentItem.data("container").load( buildUrl(), callback );
},
showContent = function() {
  $currentItem.data("container").show();
  hideContent();
},
hideContent = function() {
  $currentItem.siblings().each(function() {
    $( this ).data("container").hide();
  });
};
$items.each( createContainer ).click( showItem );

return {
  showItemByIndex: showItemByIndex
};

})();

feature.showItemByIndex( 0 );
});
4

1 回答 1

2
  1. 您可以在多个语句中或仅在 1 个语句中声明变量,这是您的决定。(var x;var y;var x,y;)。据我所知没有区别。

  2. 以 $ 开头:是开发人员的选择,对于 PHP 程序员来说它看起来更好,不影响变量,没什么特别的,只是一个命名约定。我不使用它,也不推荐它,它只会让你的代码看起来最糟糕,如果你使用 jQuery 会让你更加头疼。

  3. 见第1点(它有“var”,但它在语句的开头):

    var createContainer = function() {...},buildUrl = function() { ... },showItem = function() {... },showItemByIndex = function( idx ) {...}...;

在http://www.w3schools.com/js/js_variables.asphttp://www.wikihow.com/Declare-a-Variable-in-Javascript查看更多详细信息

于 2013-02-27T20:37:45.247 回答