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(...) {...}) ();か What is going on here このように宣言された関数を見たことがありません。
  2. 他の言語の$ように変数名を使用していますか_
  3. この関数はどのようにループし続けますか? C++ では、function('e').
4

5 に答える 5

1
  1. あなたが話している形式は、即時呼び出し関数式 (IIFE) と呼ばれます。通常、プラグイン/ライブラリ定義で使用され、宣言された関数をウィンドウ/ドキュメントの一部にしたり、jquery などの既存のオブジェクトを拡張したりします。

  2. $ は jQuery 用、 _ はunderscore.js用ですが、渡す引数によって異なります。

  3. 参照している関数は、イベント deviceorientation が発生するたびに実行されます。これは、JavaScript ではコールバックまたはハンドラーと呼ばれます。

于 2013-08-27T08:29:27.987 に答える