gpt4 book ai didi

javascript - 无法理解 javaScript 函数的定义

转载 作者:行者123 更新时间:2023-11-28 13:40:01 29 4
gpt4 key购买 nike

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') 发生了什么。

最佳答案

1) why does the function have a format of (function(...) {...}) (); What is going on here I have never seen a function declared like this.

这是一个所谓的 IIFE(即时调用函数表达式),它基本上是一个未命名的函数,当编译器到达末尾时就会调用它。

将其视为一个简单的命名函数:

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

然后在声明后立即执行:

myFunc();

现在是 IIFE:

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

2) is the $ use a variable name like a _ in other languages

是的,但在本例中它是一个函数,仅返回 id e 的元素(通常它是 jQuery 库,非常常见的一个)。

3) how does this function keep on looping, in C++ you needed a while or for or recursion what is going on with the function('e').

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

编辑:正如@Rup指出的,您可能指的是为什么每次触发事件时都会执行处理程序。这是可能的,因为 window.addEventListener 函数向事件添加了一个处理程序(在本例中为 deviceOrientation),每次触发事件时都会调用该处理程序。更多信息请引用this page ,MDN 是获取有关 JS 信息的最佳场所(恕我直言)。

关于javascript - 无法理解 javaScript 函数的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460480/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com