0

http://jsfiddle.net/sidonaldson/ZuPYM/

(function() {
  if (window.DeviceOrientationEvent) 
  {
      $("e").innerHTML = "DeviceOrientationEvent";
      window.addEventListener('deviceorientation', function(e) 
      {
          // y-axis - yaw
          var g = e.gamma || 0;
          // x-axis - tilt
          var b = e.beta || 0;
          // z=axis - swivel
          var a = e.alpha || 0;
          // degree north
          var c = e.compassHeading || e.webkitCompassHeading || 0;
          // accuracy in deg
          var accuracy = e.compassAccuracy || e.webkitCompassAccuracy || 0;
          deviceOrientationHandler(g, b, a, c, accuracy);
      }, false);
  }     
  else
  {
      $("e").innerHTML = "NOT SUPPORTED #FAIL";
  }
})();
  1. 为什么函数的格式(function(...) {...}) ();是这里发生了什么我从未见过这样声明的函数。
  2. 是否$_在其他语言中一样使用变量名
  3. 这个函数如何继续循环,在 C++ 中你需要一段时间或 for 或递归function('e').
4

5 回答 5

2

1) 为什么函数的格式是(function(...) {...}) (); 这里发生了什么我从未见过这样声明的函数。

这是一个所谓的 IIFE(Instantly Invoked Function Expression),它基本上是一个未命名的函数,仅在编译器结束时才被调用。

把它想象成一个简单的命名函数:

function myFunc() {...my code...}

然后在声明之后立即执行:

myFunc();

现在的IIFE:

(function() {...my code...})();
^--------------------------^^^
Parentheses to enclose the function, the last two are to invoke the function itself

2) 是 $ 在其他语言中使用像 _ 这样的变量名

是的,但在这种情况下,它是一个简单地返回带有 id 的元素的函数e(通常是 jQuery 库,一个非常常见的库)。

3)这个函数如何继续循环,在C++中你需要一段时间或for或递归函数('e')发生了什么。

该函数不循环,它只执行一次。

编辑:正如@Rup 指出的那样,您可能指的是每次触发事件时都执行处理程序的原因。这是可能的,因为该window.addEventListener函数向事件(在这种情况下deviceOrientation)添加了一个处理程序,每次触发事件时都会调用该处理程序。有关更多信息,请参阅此页面,MDN 是获取 JS 信息的最佳位置(恕我直言)。

于 2013-08-27T08:26:54.050 回答
2
  1. 这是一个IIFE。基本上,此函数将立即执行,无需显式调用。一旦您对 javascript 更加熟悉,我强烈建议您阅读 IIFE(立即调用函数表达式)的链接

  2. $ 用于jQuery。它是一个用于 HTML 操作的 JavaScript 库。在 javascript 中,$ 和 _ 以及更多非字母数字字符也经常用于定义变量。通常,$代表 jQuery(但您也可以将它用于其他任何东西)。同样,_代表 underscore.js。

  3. 此功能不会“继续循环”。它是一个听众。它监听DeviceOrientationEvent事件并仅在设备方向改变时执行。

看来您对 javascript 很陌生。我建议您在深入了解 jQuery 之前获得一些 JS 经验

于 2013-08-27T08:25:24.717 回答
1
  1. 您正在谈论的格式称为立即调用函数表达式(IIFE)。它通常用于插件/库定义中,以使声明的函数成为窗口/文档的一部分或扩展现有对象,例如 jquery。

  2. $ 用于 jQuery, _ 用于underscore.js,但这仅取决于您传递的参数。

  3. 每次触发事件 deviceorientation 时都会执行您所指的功能。这在 javascript 中称为回调或处理程序。

于 2013-08-27T08:29:27.987 回答
0

1) 这是一个匿名函数,被立即调用和执行。

(function(argumentList) {
    // body
})(provideArguments);

2) $ 是 jQuery 库声明的全局变量。

3)如果你使用jQuery,你可以直接影响你查询的所有结果。图书馆将为您循环。例如,此代码将选择所有锚标记,foreach 标记将执行 addClass 方法,将类“myClassName”放入“查询”的结果中。

$('a').addClass('myClassName');
于 2013-08-27T08:28:38.623 回答
0
(function(...) {...}) ();

这意味着代码将直接在页面中执行。

$

这是 Jquery 选择器。cf:http ://api.jquery.com/category/selectors/

e

这是一个事件对象。cf:http ://api.jquery.com/category/events/event-object/

于 2013-08-27T08:30:10.847 回答