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";
}
})();(function(...) {...}) ();格式--我从来没有见过像这样声明的函数。$使用的变量名类似于_。function('e')正在发生的事情进行递归。发布于 2013-08-27 08:26:54
1)为什么函数有(函数(.){.}()的格式;这里发生的事情我从未见过这样声明的函数。
这是一个所谓的IIFE(立即调用函数表达式),它基本上是一个未命名的函数,在编译器到达它的末尾时才被调用。
把它看作是一个简单的命名函数:
function myFunc() {...my code...}然后在声明之后立即执行:
myFunc();现在的生活:
(function() {...my code...})();
^--------------------------^^^
Parentheses to enclose the function, the last two are to invoke the function itself2) $是否像其他语言中使用a__一样使用变量名?
是的,但在这种情况下,它只是返回id e的元素(通常是jQuery库,非常常见)。
3)这个函数是如何循环的,在C++中,您需要一段时间,或者需要对函数(‘e’)进行递归处理。
函数不循环,只执行一次。
编辑:正如@Rup所指出的,您可能是指每次触发事件时都会执行处理程序的原因。这是可能的,因为window.addEventListener函数向事件添加了一个处理程序(在本例中是deviceOrientation),每次触发事件时都会调用该事件。有关更多信息,请参考此页,MDN是获取JS信息的最佳场所。
发布于 2013-08-27 08:25:24
$代表jQuery (但您也可以将它用于其他任何事情)。类似地,_代表underscore.js。DeviceOrientationEvent事件,并仅在设备方向更改时执行。似乎您对javascript非常陌生。我建议您在跳入jQuery之前在JS上获得一些经验。
发布于 2013-08-27 08:28:38
1)这是一个匿名函数正在被调用和执行。
(function(argumentList) {
// body
})(provideArguments);$是由jQuery库声明的全局变量。
3)如果使用jQuery,可以直接影响查询的所有结果。图书馆会帮你转的。例如,这段代码将选择所有锚标记,而foreach标记将执行addClass方法,将类"myClassName“放到”查询“的结果中。
$('a').addClass('myClassName');https://stackoverflow.com/questions/18460480
复制相似问题